include/LibreOfficeKit/LibreOfficeKitEnums.h | 9 +++++++++ include/sfx2/lokhelper.hxx | 4 ++++ sfx2/source/sidebar/ContextChangeBroadcaster.cxx | 10 ++++++++++ sfx2/source/view/lokhelper.cxx | 9 +++++++++ svx/source/sidebar/ContextChangeEventMultiplexer.cxx | 9 +++++++++ 5 files changed, 41 insertions(+)
New commits: commit 4f605d49ba5a436730ceddaf739544b99c0812fe Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Tue Nov 6 11:20:27 2018 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Wed Nov 7 11:10:37 2018 +0100 lok: Notify about the current editing context. Change-Id: I47e67b680a6abdb66020b295f55ee6a73b7b5608 diff --git a/include/LibreOfficeKit/LibreOfficeKitEnums.h b/include/LibreOfficeKit/LibreOfficeKitEnums.h index 767a0bb04366..f91b33886195 100644 --- a/include/LibreOfficeKit/LibreOfficeKitEnums.h +++ b/include/LibreOfficeKit/LibreOfficeKitEnums.h @@ -594,6 +594,15 @@ typedef enum * convenience. */ LOK_CALLBACK_CLIPBOARD_CHANGED = 38, + + /** + * When the (editing) context changes - like the user switches from + * editing textbox in Impress to editing a shape there. + * + * Payload is the application ID and context, delimited by space. + * Eg. com.sun.star.presentation.PresentationDocument TextObject + */ + LOK_CALLBACK_CONTEXT_CHANGED = 39, } LibreOfficeKitCallbackType; diff --git a/include/sfx2/lokhelper.hxx b/include/sfx2/lokhelper.hxx index 08424a90f770..9f68c6d7dd60 100644 --- a/include/sfx2/lokhelper.hxx +++ b/include/sfx2/lokhelper.hxx @@ -54,6 +54,10 @@ public: static void notifyVisCursorInvalidation(OutlinerViewShell const* pThisView, const OString& rRectangle); /// Notifies all views with the given type and payload. static void notifyAllViews(int nType, const OString& rPayload); + + /// Notify about the editing context change. + static void notifyContextChange(SfxViewShell const* pViewShell, const OUString& aApplication, const OUString& aContext); + /// A special value to signify 'infinity'. /// This value is chosen such that sal_Int32 will not overflow when manipulated. static const long MaxTwips = 1e9; diff --git a/sfx2/source/sidebar/ContextChangeBroadcaster.cxx b/sfx2/source/sidebar/ContextChangeBroadcaster.cxx index bdbf62defb36..42aacef4591e 100644 --- a/sfx2/source/sidebar/ContextChangeBroadcaster.cxx +++ b/sfx2/source/sidebar/ContextChangeBroadcaster.cxx @@ -22,7 +22,10 @@ #include <com/sun/star/ui/ContextChangeEventMultiplexer.hpp> #include <com/sun/star/frame/ModuleManager.hpp> #include <osl/diagnose.h> +#include <comphelper/lok.hxx> #include <comphelper/processfactory.hxx> +#include <sfx2/lokhelper.hxx> +#include <sfx2/viewsh.hxx> using ::rtl::OUString; using namespace css; @@ -87,6 +90,13 @@ void ContextChangeBroadcaster::BroadcastContextChange ( return; } + // notify the LOK too + if (comphelper::LibreOfficeKit::isActive()) + { + if (SfxViewShell* pViewShell = SfxViewShell::Get(rxFrame->getController())) + SfxLokHelper::notifyContextChange(pViewShell, rsModuleName, rsContextName); + } + const css::ui::ContextChangeEventObject aEvent( rxFrame->getController(), rsModuleName, diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index e6fb475846a8..475317158158 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -226,4 +226,13 @@ void SfxLokHelper::notifyAllViews(int nType, const OString& rPayload) } } +void SfxLokHelper::notifyContextChange(SfxViewShell const* pViewShell, const OUString& aApplication, const OUString& aContext) +{ + OStringBuffer aBuffer; + aBuffer.append(OUStringToOString(aApplication.replace(' ', '_'), RTL_TEXTENCODING_UTF8)); + aBuffer.append(' '); + aBuffer.append(OUStringToOString(aContext.replace(' ', '_'), RTL_TEXTENCODING_UTF8)); + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_CONTEXT_CHANGED, aBuffer.makeStringAndClear().getStr()); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/sidebar/ContextChangeEventMultiplexer.cxx b/svx/source/sidebar/ContextChangeEventMultiplexer.cxx index 5591ee389200..c714627afdae 100644 --- a/svx/source/sidebar/ContextChangeEventMultiplexer.cxx +++ b/svx/source/sidebar/ContextChangeEventMultiplexer.cxx @@ -23,7 +23,9 @@ #include <com/sun/star/ui/XContextChangeEventMultiplexer.hpp> #include <com/sun/star/ui/ContextChangeEventMultiplexer.hpp> #include <com/sun/star/frame/ModuleManager.hpp> +#include <comphelper/lok.hxx> #include <comphelper/processfactory.hxx> +#include <sfx2/lokhelper.hxx> #include <sfx2/viewsh.hxx> #include <tools/diagnose_ex.h> @@ -37,6 +39,13 @@ void ContextChangeEventMultiplexer::NotifyContextChange ( { if (rxController.is() && rxController->getFrame().is()) { + // notify the LOK too + if (comphelper::LibreOfficeKit::isActive()) + { + if (SfxViewShell* pViewShell = SfxViewShell::Get(rxController)) + SfxLokHelper::notifyContextChange(pViewShell, GetModuleName(rxController->getFrame()), vcl::EnumContext::GetContextName(eContext)); + } + const css::ui::ContextChangeEventObject aEvent( rxController, GetModuleName(rxController->getFrame()), _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits