diff options
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/editeng/editview.cxx | 5 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.cxx | 19 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.hxx | 9 | ||||
-rw-r--r-- | editeng/source/outliner/outlvw.cxx | 5 |
4 files changed, 36 insertions, 2 deletions
diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx index e9a36bf7144a..51f3b6adf8cd 100644 --- a/editeng/source/editeng/editview.cxx +++ b/editeng/source/editeng/editview.cxx @@ -583,6 +583,11 @@ void EditView::registerLibreOfficeKitCallback(OutlinerSearchable *pSearchable) pImpEditView->registerLibreOfficeKitCallback(pSearchable); } +void EditView::registerLibreOfficeKitViewCallback(OutlinerViewCallable *pCallable) +{ + pImpEditView->registerLibreOfficeKitViewCallback(pCallable); +} + void EditView::SetControlWord( EVControlBits nWord ) { pImpEditView->nControl = nWord; diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index c3b605810c96..c95aed4d4e4b 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -80,6 +80,7 @@ ImpEditView::ImpEditView( EditView* pView, EditEngine* pEng, vcl::Window* pWindo pPointer = nullptr; pBackgroundColor = nullptr; mpLibreOfficeKitSearchable = nullptr; + mpLibreOfficeKitViewCallable = nullptr; nScrollDiffX = 0; nExtraCursorFlags = 0; nCursorBidiLevel = CURSOR_BIDILEVEL_DONTKNOW; @@ -119,6 +120,8 @@ void ImpEditView::SetBackgroundColor( const Color& rColor ) void ImpEditView::registerLibreOfficeKitCallback(OutlinerSearchable* pSearchable) { + // Per-view callbacks should always invoke ImpEditView::registerLibreOfficeKitViewCallback(). + assert(!comphelper::LibreOfficeKit::isViewCallback()); mpLibreOfficeKitSearchable = pSearchable; } @@ -128,6 +131,17 @@ void ImpEditView::libreOfficeKitCallback(int nType, const char* pPayload) const mpLibreOfficeKitSearchable->libreOfficeKitCallback(nType, pPayload); } +void ImpEditView::registerLibreOfficeKitViewCallback(OutlinerViewCallable* pCallable) +{ + mpLibreOfficeKitViewCallable = pCallable; +} + +void ImpEditView::libreOfficeKitViewCallback(int nType, const char* pPayload) const +{ + if (mpLibreOfficeKitViewCallable) + mpLibreOfficeKitViewCallable->libreOfficeKitViewCallback(nType, pPayload); +} + void ImpEditView::SetEditSelection( const EditSelection& rEditSelection ) { // set state before notification @@ -1002,7 +1016,10 @@ void ImpEditView::ShowCursor( bool bGotoCursor, bool bForceVisCursor ) aRect.setWidth(0); OString sRect = aRect.toString(); - libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, sRect.getStr()); + if (comphelper::LibreOfficeKit::isViewCallback()) + libreOfficeKitViewCallback(LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, sRect.getStr()); + else + libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, sRect.getStr()); } CursorDirection nCursorDir = CursorDirection::NONE; diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 15a433901933..6c1c9f4e7d6d 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -221,7 +221,10 @@ private: EditView* pEditView; vcl::Cursor* pCursor; Color* pBackgroundColor; + /// Model callback. OutlinerSearchable* mpLibreOfficeKitSearchable; + /// Per-view callback. + OutlinerViewCallable* mpLibreOfficeKitViewCallable; EditEngine* pEditEngine; VclPtr<vcl::Window> pOutWin; Pointer* pPointer; @@ -368,8 +371,12 @@ public: /// @see vcl::ITiledRenderable::registerCallback(). void registerLibreOfficeKitCallback(OutlinerSearchable* pSearchable); - /// Invokes the registered callback, if there are any. + /// Invokes the registered model callback, if there are any. void libreOfficeKitCallback(int nType, const char* pPayload) const; + /// @see vcl::ITiledRenderable::registerCallback(). + void registerLibreOfficeKitViewCallback(OutlinerViewCallable* pCallable); + /// Invokes the registered view callback, if there are any. + void libreOfficeKitViewCallback(int nType, const char* pPayload) const; bool IsWrongSpelledWord( const EditPaM& rPaM, bool bMarkIfWrong ); OUString SpellIgnoreWord(); diff --git a/editeng/source/outliner/outlvw.cxx b/editeng/source/outliner/outlvw.cxx index a64d85bc74e2..eec3ec9f0c76 100644 --- a/editeng/source/outliner/outlvw.cxx +++ b/editeng/source/outliner/outlvw.cxx @@ -1426,6 +1426,11 @@ void OutlinerView::registerLibreOfficeKitCallback(OutlinerSearchable* pSearchabl pEditView->registerLibreOfficeKitCallback(pSearchable); } +void OutlinerView::registerLibreOfficeKitViewCallback(OutlinerViewCallable* pCallable) +{ + pEditView->registerLibreOfficeKitViewCallback(pCallable); +} + Color OutlinerView::GetBackgroundColor() { return pEditView->GetBackgroundColor(); |