summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2019-05-31 11:31:34 +0200
committerSzymon Kłos <szymon.klos@collabora.com>2019-10-16 13:23:50 +0200
commit786f380394b23f5a804981a719d2b51ded1302c4 (patch)
tree741d9a0d4c932979e1f4ef22d60046b74a52946a
parentdedf1e7ff1714188f4e18e93de8ea537897377d4 (diff)
Send 'INPLACE EXIT' on inplace deactivation
Change-Id: Ieb44fb356966df0eb92141a5f22f1df13683f6fc Reviewed-on: https://gerrit.libreoffice.org/80694 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
-rw-r--r--desktop/source/lib/init.cxx10
-rw-r--r--sfx2/source/view/ipclient.cxx8
2 files changed, 17 insertions, 1 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 1790bdbfa478..d2e9cfb7161e 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1187,7 +1187,6 @@ void CallbackFlushHandler::queue(const int type, const char* data)
case LOK_CALLBACK_TEXT_SELECTION_START:
case LOK_CALLBACK_TEXT_SELECTION_END:
case LOK_CALLBACK_TEXT_SELECTION:
- case LOK_CALLBACK_GRAPHIC_SELECTION:
case LOK_CALLBACK_MOUSE_POINTER:
case LOK_CALLBACK_CELL_CURSOR:
case LOK_CALLBACK_CELL_FORMULA:
@@ -1249,6 +1248,15 @@ void CallbackFlushHandler::queue(const int type, const char* data)
if (processWindowEvent(aCallbackData))
return;
break;
+
+ case LOK_CALLBACK_GRAPHIC_SELECTION:
+ {
+ // remove only selection ranges and 'EMPTY' messages
+ // always send 'INPLACE' and 'INPLACE EXIT' messages
+ removeAll([type, payload] (const queue_type::value_type& elem)
+ { return (elem.Type == type && elem.PayloadString[0] != 'I'); });
+ }
+ break;
}
}
diff --git a/sfx2/source/view/ipclient.cxx b/sfx2/source/view/ipclient.cxx
index f2d6d4e78bcd..00063e7b1ed6 100644
--- a/sfx2/source/view/ipclient.cxx
+++ b/sfx2/source/view/ipclient.cxx
@@ -72,6 +72,7 @@
#include <cppuhelper/exc_hlp.hxx>
#include <sfx2/lokhelper.hxx>
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
#define SFX_CLIENTACTIVATE_TIMEOUT 100
@@ -353,6 +354,13 @@ void SAL_CALL SfxInPlaceClient_Impl::deactivatedInplace()
{
if ( !m_pClient || !m_pClient->GetViewShell() )
throw uno::RuntimeException();
+
+ if ( comphelper::LibreOfficeKit::isActive() )
+ {
+ if ( SfxViewShell* pViewShell = m_pClient->GetViewShell() ) {
+ pViewShell->libreOfficeKitViewCallback( LOK_CALLBACK_GRAPHIC_SELECTION, "INPLACE EXIT" );
+ }
+ }
}