diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-01-14 14:20:40 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2016-06-12 14:59:08 +0200 |
commit | a9c74302a54965aa7b7797ca248455e739eb7d16 (patch) | |
tree | 6b2b30401fb6fcf3df24474b59f57e8b062ba4b2 /editeng/source | |
parent | 023e5d5edc5a024fd43a001a15011c5aef7e8adf (diff) |
editeng: handle SdrModel::isTiledSearching()
Given that the edit/outliner views can come and go, avoid the lifecycle
problems with just passing a pointer to the sdr model to editeng, and
then it'll always have the up to date "are we searching" information.
editeng can't depend on svx, so provide an interface class SdrModel can
implement.
(cherry picked from commit 7b5d20983dfbfb458898eeab54828ba5fef5841f)
Change-Id: I3b98011593b00ac0fab05b6b9c591dd20d94c579
Diffstat (limited to 'editeng/source')
-rw-r--r-- | editeng/source/editeng/editview.cxx | 4 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.cxx | 17 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.hxx | 4 | ||||
-rw-r--r-- | editeng/source/outliner/outlvw.cxx | 8 |
4 files changed, 26 insertions, 7 deletions
diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx index 5653731c0248..229cff52e1c3 100644 --- a/editeng/source/editeng/editview.cxx +++ b/editeng/source/editeng/editview.cxx @@ -592,9 +592,9 @@ bool EditView::isTiledRendering() return pImpEditView->isTiledRendering(); } -void EditView::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData) +void EditView::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData, OutlinerSearchable *pSearchable) { - pImpEditView->registerLibreOfficeKitCallback(pCallback, pLibreOfficeKitData); + pImpEditView->registerLibreOfficeKitCallback(pCallback, pLibreOfficeKitData, pSearchable); } void EditView::SetControlWord( EVControlBits nWord ) diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index 8475a6aa0505..bcbbf45fb244 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -26,6 +26,7 @@ #include <impedit.hxx> #include <editeng/editeng.hxx> #include <editeng/editview.hxx> +#include <editeng/outliner.hxx> #include <tools/poly.hxx> #include <editeng/unolingu.hxx> #include <com/sun/star/linguistic2/XDictionaryEntry.hpp> @@ -81,6 +82,7 @@ ImpEditView::ImpEditView( EditView* pView, EditEngine* pEng, vcl::Window* pWindo mbTiledRendering = false; mpLibreOfficeKitCallback = nullptr; mpLibreOfficeKitData = nullptr; + mpLibreOfficeKitSearchable = nullptr; nScrollDiffX = 0; nExtraCursorFlags = 0; nCursorBidiLevel = CURSOR_BIDILEVEL_DONTKNOW; @@ -128,14 +130,27 @@ bool ImpEditView::isTiledRendering() const return mbTiledRendering; } -void ImpEditView::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pData) +void ImpEditView::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pData, OutlinerSearchable* pSearchable) { mpLibreOfficeKitCallback = pCallback; mpLibreOfficeKitData = pData; + mpLibreOfficeKitSearchable = pSearchable; } void ImpEditView::libreOfficeKitCallback(int nType, const char* pPayload) const { + if (mpLibreOfficeKitSearchable && mpLibreOfficeKitSearchable->isTiledSearching()) + { + switch (nType) + { + case LOK_CALLBACK_TEXT_SELECTION: + case LOK_CALLBACK_TEXT_SELECTION_START: + case LOK_CALLBACK_TEXT_SELECTION_END: + case LOK_CALLBACK_GRAPHIC_SELECTION: + return; + } + } + if (mpLibreOfficeKitCallback) mpLibreOfficeKitCallback(nType, pPayload, mpLibreOfficeKitData); } diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 40bb0f701c70..ca05b3bae872 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -80,6 +80,7 @@ class EditView; class EditEngine; +class OutlinerSearchable; class SvxSearchItem; class SvxLRSpaceItem; @@ -225,6 +226,7 @@ private: bool mbTiledRendering; LibreOfficeKitCallback mpLibreOfficeKitCallback; void* mpLibreOfficeKitData; + OutlinerSearchable* mpLibreOfficeKitSearchable; EditEngine* pEditEngine; VclPtr<vcl::Window> pOutWin; Pointer* pPointer; @@ -372,7 +374,7 @@ public: void setTiledRendering(bool bTiledRendering); bool isTiledRendering() const; /// @see vcl::ITiledRenderable::registerCallback(). - void registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData); + void registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData, OutlinerSearchable* pSearchable); /// Invokes the registered callback, if there are any. void libreOfficeKitCallback(int nType, const char* pPayload) const; diff --git a/editeng/source/outliner/outlvw.cxx b/editeng/source/outliner/outlvw.cxx index 782d0e2d9c14..412a897bf890 100644 --- a/editeng/source/outliner/outlvw.cxx +++ b/editeng/source/outliner/outlvw.cxx @@ -1437,9 +1437,9 @@ void OutlinerView::setTiledRendering(bool bTiledRendering) pEditView->setTiledRendering(bTiledRendering); } -void OutlinerView::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData) +void OutlinerView::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData, OutlinerSearchable* pSearchable) { - pEditView->registerLibreOfficeKitCallback(pCallback, pLibreOfficeKitData); + pEditView->registerLibreOfficeKitCallback(pCallback, pLibreOfficeKitData, pSearchable); } Color OutlinerView::GetBackgroundColor() @@ -1467,7 +1467,9 @@ Selection OutlinerView::GetSurroundingTextSelection() const return pEditView->GetSurroundingTextSelection(); } - +OutlinerSearchable::~OutlinerSearchable() +{ +} // ===== some code for thesaurus sub menu within context menu |