desktop/source/lib/init.cxx | 7 +++++-- include/vcl/svapp.hxx | 14 +++++++++++++- vcl/source/app/svapp.cxx | 19 +++++++++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-)
New commits: commit 19c144cd36ccd54d5725b6c45f786e9712ae107c Author: Henry Castro <hcas...@collabora.com> AuthorDate: Fri Dec 25 13:09:00 2020 -0400 Commit: Henry Castro <hcas...@collabora.com> CommitDate: Tue Jan 5 12:21:02 2021 +0100 lok: add missing global notifier Occurs when server shows the "Macro Security Warning" before load the document if enable/disable macros, but there are no instances for document/view/controller yet. So it is required to use the global notifier so it can be sent messages to the client side using the JSDialog framework. Change-Id: I67f15b21cbaf21906b88145f3c5835cf0e1ff79d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108288 Tested-by: Jenkins Reviewed-by: Henry Castro <hcas...@collabora.com> diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 2682f3cf6e1a..6a88eb05701b 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -2464,11 +2464,14 @@ static void lo_registerCallback (LibreOfficeKit* pThis, { SolarMutexGuard aGuard; + Application* pApp = GetpApp(); + assert(pApp); + LibLibreOffice_Impl* pLib = static_cast<LibLibreOffice_Impl*>(pThis); pLib->maLastExceptionMsg.clear(); - pLib->mpCallback = pCallback; - pLib->mpCallbackData = pData; + pApp->m_pCallback = pLib->mpCallback = pCallback; + pApp->m_pCallbackData = pLib->mpCallbackData = pData; } static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const char* pFormat, const char* pFilterOptions) diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx index b1d7759765c3..bfa92cf88321 100644 --- a/include/vcl/svapp.hxx +++ b/include/vcl/svapp.hxx @@ -27,12 +27,14 @@ #include <vector> #include <comphelper/solarmutex.hxx> +#include <LibreOfficeKit/LibreOfficeKitTypes.h> #include <osl/mutex.hxx> #include <rtl/ustring.hxx> #include <osl/thread.h> #include <tools/gen.hxx> #include <tools/link.hxx> #include <vcl/dllapi.h> +#include <vcl/IDialogRenderable.hxx> #include <vcl/inputtypes.hxx> #include <vcl/exceptiontypes.hxx> #include <vcl/vclevent.hxx> @@ -227,7 +229,7 @@ enum class DialogCancelMode { @see Desktop, ImplSVData */ -class VCL_DLLPUBLIC Application +class VCL_DLLPUBLIC Application : public vcl::ILibreOfficeKitNotifier { public: /** @name Initialization @@ -1319,6 +1321,16 @@ public: bool bMobile = false); static weld::Window* GetFrameWeld(const css::uno::Reference<css::awt::XWindow>& rWindow); + + // ILibreOfficeKitNotifier + void* m_pCallbackData; + LibreOfficeKitCallback m_pCallback; + + virtual void notifyWindow(vcl::LOKWindowId nLOKWindowId, + const OUString& rAction, + const std::vector<vcl::LOKPayloadItem>& rPayload = std::vector<vcl::LOKPayloadItem>()) const override; + virtual void libreOfficeKitViewCallback(int nType, const char* pPayload) const override; + private: DECL_STATIC_LINK( Application, PostEventHandler, void*, void ); }; diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index c1cbd6d093ce..4449f38642ca 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -161,6 +161,8 @@ Application::Application() osl_setEnvironment(aVar.pData, aValue.pData); ImplGetSVData()->mpApp = this; + m_pCallbackData = nullptr; + m_pCallback = nullptr; } Application::~Application() @@ -310,6 +312,23 @@ void Application::EndAllPopups() Application::PostUserEvent( LINK( nullptr, ImplSVAppData, ImplEndAllPopupsMsg ) ); } +void Application::notifyWindow(vcl::LOKWindowId /*nLOKWindowId*/, + const OUString& /*rAction*/, + const std::vector<vcl::LOKPayloadItem>& /*rPayload = std::vector<LOKPayloadItem>()*/) const +{ +} + +void Application::libreOfficeKitViewCallback(int nType, const char* pPayload) const +{ + if (!comphelper::LibreOfficeKit::isActive()) + return; + + if (m_pCallback) + { + m_pCallback(nType, pPayload, m_pCallbackData); + } +} + namespace { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits