summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMarco Cecchetti <marco.cecchetti@collabora.com>2016-09-10 21:02:36 +0200
committerMarco Cecchetti <mrcekets@gmail.com>2016-09-11 17:05:45 +0000
commitbbae556d12e4edf7795b0b5643df77fd8cdbdacd (patch)
tree626fe90dc21bfa2a7825aac08974ef53da9108aa /desktop
parenta3018b02db3ce92387ccbab274ff1f29dd58f8b3 (diff)
LOK: we use callbacks latch for not missing messages sent very early
- lok::Document::setCallbackLatch: used on document load for set/unset the latch - now cell cursors of other views are correctly notified to the new view Change-Id: Ife6dca0e3e329b801d44070f55869afe95a2f313 Reviewed-on: https://gerrit.libreoffice.org/28811 Reviewed-by: Marco Cecchetti <mrcekets@gmail.com> Tested-by: Marco Cecchetti <mrcekets@gmail.com>
Diffstat (limited to 'desktop')
-rw-r--r--desktop/source/lib/init.cxx19
1 files changed, 18 insertions, 1 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index cb86a63d8ff6..f678d6944ac2 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -392,7 +392,6 @@ static void doc_getDocumentSize(LibreOfficeKitDocument* pThis,
long* pHeight);
static void doc_initializeForRendering(LibreOfficeKitDocument* pThis,
const char* pArguments);
-
static void doc_registerCallback(LibreOfficeKitDocument* pThis,
LibreOfficeKitCallback pCallback,
void* pData);
@@ -444,6 +443,9 @@ static unsigned char* doc_renderFont(LibreOfficeKitDocument* pThis,
int* pFontWidth,
int* pFontHeight);
static char* doc_getPartHash(LibreOfficeKitDocument* pThis, int nPart);
+static void doc_setCallbackLatch(LibreOfficeKitDocument* pThis,
+ bool bCallbackLatch);
+
LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XComponent> &xComponent)
: mxComponent(xComponent)
@@ -490,6 +492,8 @@ LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XCompone
m_pDocumentClass->renderFont = doc_renderFont;
m_pDocumentClass->getPartHash = doc_getPartHash;
+ m_pDocumentClass->setCallbackLatch = doc_setCallbackLatch;
+
gDocumentClass = m_pDocumentClass;
}
pClass = m_pDocumentClass.get();
@@ -2341,6 +2345,19 @@ unsigned char* doc_renderFont(LibreOfficeKitDocument* /*pThis*/,
return nullptr;
}
+static void doc_setCallbackLatch(LibreOfficeKitDocument* pThis, bool bCallbackLatch)
+{
+ SolarMutexGuard aGuard;
+ LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis);
+
+ int nView = SfxLokHelper::getView();
+ if (nView < 0)
+ return;
+
+ if (pDocument->mpCallbackFlushHandlers[nView])
+ pDocument->mpCallbackFlushHandlers[nView]->setEventLatch(bCallbackLatch);
+}
+
static char* lo_getError (LibreOfficeKit *pThis)
{
LibLibreOffice_Impl* pLib = static_cast<LibLibreOffice_Impl*>(pThis);