diff options
author | Henry Castro <hcastro@collabora.com> | 2020-12-25 17:30:42 -0400 |
---|---|---|
committer | Henry Castro <hcastro@collabora.com> | 2021-01-04 18:38:20 +0100 |
commit | 04211e7ca1c0caec9aa72ac70112842a1f2f1a50 (patch) | |
tree | b35ed8a10a8fb682d019c1b7b6e27a2dcad6031c | |
parent | ff3ce4f389083fba206e752e09f6b60ca003f625 (diff) |
lok: add lo_sendDialogEvent to post dialog events
When the "Macro Security Warning" is shown in client side,
the model/view/controller are not created yet. It is necessary
to create a function to posts a dialog event.
Change-Id: I2bfc9edecc708dc79da575ea515e3144e78c10e2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108293
Tested-by: Jenkins
Reviewed-by: Henry Castro <hcastro@collabora.com>
-rw-r--r-- | desktop/source/lib/init.cxx | 19 | ||||
-rw-r--r-- | include/LibreOfficeKit/LibreOfficeKit.h | 5 | ||||
-rw-r--r-- | include/LibreOfficeKit/LibreOfficeKit.hxx | 11 |
3 files changed, 34 insertions, 1 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index a512f33868ac..2682f3cf6e1a 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -2068,6 +2068,10 @@ static void lo_runLoop(LibreOfficeKit* pThis, LibreOfficeKitWakeCallback pWakeCallback, void* pData); +static void lo_sendDialogEvent(LibreOfficeKit* pThis, + unsigned long long int nLOKWindowId, + const char* pArguments); + LibLibreOffice_Impl::LibLibreOffice_Impl() : m_pOfficeClass( gOfficeClass.lock() ) , maThread(nullptr) @@ -2092,6 +2096,7 @@ LibLibreOffice_Impl::LibLibreOffice_Impl() m_pOfficeClass->runMacro = lo_runMacro; m_pOfficeClass->signDocument = lo_signDocument; m_pOfficeClass->runLoop = lo_runLoop; + m_pOfficeClass->sendDialogEvent = lo_sendDialogEvent; gOfficeClass = m_pOfficeClass; } @@ -3692,7 +3697,8 @@ public: } // anonymous namespace -static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned long long int nWindowId, const char* pArguments) + +static void lcl_sendDialogEvent(unsigned long long int nWindowId, const char* pArguments) { SolarMutexGuard aGuard; @@ -3775,6 +3781,17 @@ static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned long pWindow->Resize(); } + +static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned long long int nWindowId, const char* pArguments) +{ + lcl_sendDialogEvent(nWindowId, pArguments); +} + +static void lo_sendDialogEvent(LibreOfficeKit* /*pThis*/, unsigned long long int nWindowId, const char* pArguments) +{ + lcl_sendDialogEvent(nWindowId, pArguments); +} + static void doc_postUnoCommand(LibreOfficeKitDocument* pThis, const char* pCommand, const char* pArguments, bool bNotifyWhenFinished) { comphelper::ProfileZone aZone("doc_postUnoCommand"); diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h index f4244def5a6b..2279260d0e90 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.h +++ b/include/LibreOfficeKit/LibreOfficeKit.h @@ -110,6 +110,11 @@ struct _LibreOfficeKitClass LibreOfficeKitPollCallback pPollCallback, LibreOfficeKitWakeCallback pWakeCallback, void* pData); + + /// @see lok::Office::sendDialogEvent + void (*sendDialogEvent) (LibreOfficeKit* pThis, + unsigned long long int nLOKWindowId, + const char* pArguments); }; #define LIBREOFFICEKIT_DOCUMENT_HAS(pDoc,member) LIBREOFFICEKIT_HAS_MEMBER(LibreOfficeKitDocumentClass,member,(pDoc)->pClass->nSize) diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx index 23b79c742c09..962270452e20 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.hxx +++ b/include/LibreOfficeKit/LibreOfficeKit.hxx @@ -979,6 +979,17 @@ public: { mpThis->pClass->runLoop(mpThis, pPollCallback, pWakeCallback, pData); } + + /** + * Posts a dialog event for the window with given id + * + * @param nWindowId id of the window to notify + * @param pArguments arguments of the event. + */ + void sendDialogEvent(unsigned long long int nWindowId, const char* pArguments = NULL) + { + mpThis->pClass->sendDialogEvent(mpThis, nWindowId, pArguments); + } }; /// Factory method to create a lok::Office instance. |