summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2021-09-24 11:25:27 +0200
committerLuboš Luňák <l.lunak@collabora.com>2021-10-15 13:41:04 +0200
commitabb8d6e97029b1e344de04db31e3f616360e52aa (patch)
tree514a28b9b4b152f9ba1901668026f2274e7205b2 /sc
parente10b8707d01ff2a31f0d62641eb45adc9f7fde92 (diff)
do not use text-based LOK callback internally
CallbackFlushHandler post-processes LOK messages, but for things like dropping useless invalidations it needs to know the rectangle or the view id, and since the only data it gets are string messages, it needs to convert those back to binary form. Which is slow with large numbers of messages. Add internal LOK callback variant that allows also passing specific data in the original binary form. And then use directly the binary data in CallbackFlushHandler. Change-Id: I8dd30d2ff9c09feadebc31a44d8e6a8ccc306504 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123627 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/qa/unit/tiledrendering/tiledrendering.cxx154
-rw-r--r--sc/source/ui/view/tabview5.cxx3
2 files changed, 80 insertions, 77 deletions
diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx
index ccd0db94daa4..39571de2bed5 100644
--- a/sc/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx
@@ -30,6 +30,7 @@
#include <comphelper/propertyvalue.hxx>
#include <sfx2/childwin.hxx>
#include <sfx2/lokhelper.hxx>
+#include <sfx2/lokcallback.hxx>
#include <svx/svdpage.hxx>
#include <vcl/svapp.hxx>
#include <vcl/scheduler.hxx>
@@ -65,7 +66,10 @@ namespace
char const DATA_DIRECTORY[] = "/sc/qa/unit/tiledrendering/data/";
-class ScTiledRenderingTest : public test::BootstrapFixture, public unotest::MacrosTest, public XmlTestTools
+class ScTiledRenderingTest : public test::BootstrapFixture,
+ public unotest::MacrosTest,
+ public XmlTestTools,
+ public SfxLokCallbackInterface
{
public:
ScTiledRenderingTest();
@@ -178,10 +182,13 @@ public:
CPPUNIT_TEST(testSheetViewDataCrash);
CPPUNIT_TEST_SUITE_END();
+ virtual void libreOfficeKitViewCallback(int nType, const char* pPayload) override;
+ virtual void libreOfficeKitViewCallback(int nType, const char* pPayload, int nViewId) override;
+ virtual void libreOfficeKitViewInvalidateTilesCallback(const tools::Rectangle* pRect,
+ int nPart) override;
+
private:
ScModelObj* createDoc(const char* pName);
- static void callback(int nType, const char* pPayload, void* pData);
- void callbackImpl(int nType, const char* pPayload);
/// document size changed callback.
osl::Condition m_aDocSizeCondition;
@@ -214,7 +221,7 @@ void ScTiledRenderingTest::tearDown()
{
// The current view is unregistered here, multiple views have to be unregistered
// in the test function itself.
- pViewShell->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ pViewShell->setLibreOfficeKitViewCallback(nullptr);
}
}
mxComponent->dispose();
@@ -235,11 +242,6 @@ ScModelObj* ScTiledRenderingTest::createDoc(const char* pName)
return pModelObj;
}
-void ScTiledRenderingTest::callback(int nType, const char* pPayload, void* pData)
-{
- static_cast<ScTiledRenderingTest*>(pData)->callbackImpl(nType, pPayload);
-}
-
/* TODO when needed...
static std::vector<OUString> lcl_convertSeparated(const OUString& rString, sal_Unicode nSeparator)
{
@@ -269,7 +271,12 @@ static void lcl_convertRectangle(const OUString& rString, Rectangle& rRectangle)
}
*/
-void ScTiledRenderingTest::callbackImpl(int nType, const char* pPayload)
+void ScTiledRenderingTest::libreOfficeKitViewCallback(int nType, const char* pPayload, int)
+{
+ libreOfficeKitViewCallback(nType, pPayload); // the view id is also included in payload
+}
+
+void ScTiledRenderingTest::libreOfficeKitViewCallback(int nType, const char* pPayload)
{
switch (nType)
{
@@ -287,6 +294,10 @@ void ScTiledRenderingTest::callbackImpl(int nType, const char* pPayload)
}
}
+void ScTiledRenderingTest::libreOfficeKitViewInvalidateTilesCallback(const tools::Rectangle*, int)
+{
+}
+
void ScTiledRenderingTest::testRowColumnSelections()
{
comphelper::LibreOfficeKit::setActive();
@@ -397,7 +408,7 @@ void ScTiledRenderingTest::testDocumentSize()
ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
CPPUNIT_ASSERT(pViewShell);
- pViewShell->registerLibreOfficeKitViewCallback(&ScTiledRenderingTest::callback, this);
+ pViewShell->setLibreOfficeKitViewCallback(this);
// check initial document size
Size aDocSize = pModelObj->getDocumentSize();
@@ -558,7 +569,7 @@ struct TextSelectionMessage
};
/// A view callback tracks callbacks invoked on one specific view.
-class ViewCallback final
+class ViewCallback final : public SfxLokCallbackInterface
{
SfxViewShell* mpViewShell;
int mnView;
@@ -593,7 +604,7 @@ public:
m_bViewLock(false)
{
mpViewShell = SfxViewShell::Current();
- mpViewShell->registerLibreOfficeKitViewCallback(&ViewCallback::callback, this);
+ mpViewShell->setLibreOfficeKitViewCallback(this);
mnView = SfxLokHelper::getView();
if (!bDeleteListenerOnDestruct)
mpViewShell = nullptr;
@@ -604,16 +615,16 @@ public:
if (mpViewShell)
{
SfxLokHelper::setView(mnView);
- mpViewShell->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ mpViewShell->setLibreOfficeKitViewCallback(nullptr);
}
}
- static void callback(int nType, const char* pPayload, void* pData)
+ void libreOfficeKitViewCallback(int nType, const char* pPayload, int /*nViewId*/)
{
- static_cast<ViewCallback*>(pData)->callbackImpl(nType, pPayload);
+ libreOfficeKitViewCallback(nType, pPayload); // the view id is also included in payload
}
- void callbackImpl(int nType, const char* pPayload)
+ void libreOfficeKitViewCallback(int nType, const char* pPayload)
{
switch (nType)
{
@@ -660,28 +671,7 @@ public:
}
break;
case LOK_CALLBACK_INVALIDATE_TILES:
- {
- OString text(pPayload);
- if (text.startsWith("EMPTY"))
- {
- m_bFullInvalidateTiles = true;
- }
- else
- {
- uno::Sequence<OUString> aSeq = comphelper::string::convertCommaSeparated(OUString::createFromAscii(pPayload));
- CPPUNIT_ASSERT(aSeq.getLength() == 4 || aSeq.getLength() == 5);
- tools::Rectangle aInvalidationRect;
- aInvalidationRect.setX(aSeq[0].toInt32());
- aInvalidationRect.setY(aSeq[1].toInt32());
- aInvalidationRect.setWidth(aSeq[2].toInt32());
- aInvalidationRect.setHeight(aSeq[3].toInt32());
- m_aInvalidations.push_back(aInvalidationRect);
- if (aSeq.getLength() == 5)
- m_aInvalidationsParts.push_back(aSeq[4].toInt32());
- m_bInvalidateTiles = true;
- }
- }
- break;
+ abort();
case LOK_CALLBACK_CELL_FORMULA:
{
m_sCellFormula = pPayload;
@@ -716,6 +706,20 @@ public:
}
}
}
+ void libreOfficeKitViewInvalidateTilesCallback(const tools::Rectangle* pRect, int nPart)
+ {
+ if (pRect == nullptr)
+ {
+ m_bFullInvalidateTiles = true;
+ }
+ else
+ {
+ m_aInvalidations.push_back(*pRect);
+ if(nPart >= -1)
+ m_aInvalidationsParts.push_back(nPart);
+ m_bInvalidateTiles = true;
+ }
+ }
};
@@ -778,7 +782,7 @@ void ScTiledRenderingTest::testDocumentSizeChanged()
// Load a document that doesn't have much content.
createDoc("small.ods");
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ScTiledRenderingTest::callback, this);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(this);
// Go to the A30 cell -- that will extend the document size.
uno::Sequence<beans::PropertyValue> aPropertyValues =
@@ -880,7 +884,7 @@ void ScTiledRenderingTest::testColRowResize()
ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
CPPUNIT_ASSERT(pViewShell);
- pViewShell->registerLibreOfficeKitViewCallback(&ScTiledRenderingTest::callback, this);
+ pViewShell->setLibreOfficeKitViewCallback(this);
ScDocument& rDoc = pDocSh->GetDocument();
@@ -1057,7 +1061,7 @@ void ScTiledRenderingTest::testCreateViewGraphicSelection()
CPPUNIT_ASSERT(aView1.m_bGraphicViewSelection);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testGraphicInvalidate()
@@ -1525,9 +1529,9 @@ void ScTiledRenderingTest::testDocumentSizeWithTwoViews()
for (size_t i = 0; i < aBuffer1.size(); ++i)
CPPUNIT_ASSERT_EQUAL(aBuffer1[i], aBuffer2[i]);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testDisableUndoRepair()
@@ -1596,9 +1600,9 @@ void ScTiledRenderingTest::testDisableUndoRepair()
CPPUNIT_ASSERT(dynamic_cast< const SfxStringItem* >(aSet2.GetItem(SID_UNDO)));
}
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testDocumentRepair()
@@ -1652,9 +1656,9 @@ void ScTiledRenderingTest::testDocumentRepair()
CPPUNIT_ASSERT_EQUAL(true, pItem2->GetValue());
}
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testLanguageStatus()
@@ -1706,9 +1710,9 @@ void ScTiledRenderingTest::testLanguageStatus()
CPPUNIT_ASSERT_EQUAL(aLangBolivia, pItem2->GetValue());
}
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testMultiViewCopyPaste()
@@ -1757,9 +1761,9 @@ void ScTiledRenderingTest::testMultiViewCopyPaste()
CPPUNIT_ASSERT_EQUAL(OUString("TestCopy1"), pDoc->GetString(ScAddress(0, 1, 0)));
CPPUNIT_ASSERT_EQUAL(OUString("TestCopy2"), pDoc->GetString(ScAddress(1, 1, 0)));
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testIMESupport()
@@ -1828,9 +1832,9 @@ void ScTiledRenderingTest::testFilterDlg()
CPPUNIT_ASSERT_EQUAL(false, pView2->GetViewFrame()->GetDispatcher()->IsLocked());
CPPUNIT_ASSERT_EQUAL(false, pView1->GetViewFrame()->GetDispatcher()->IsLocked());
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testFunctionDlg()
@@ -1865,9 +1869,9 @@ void ScTiledRenderingTest::testFunctionDlg()
CPPUNIT_ASSERT_EQUAL(false, pView1->GetViewFrame()->GetDispatcher()->IsLocked());
CPPUNIT_ASSERT_EQUAL(false, pView2->GetViewFrame()->GetDispatcher()->IsLocked());
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView2);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testSpellOnlineParameter()
@@ -2121,7 +2125,7 @@ void ScTiledRenderingTest::testRowColumnHeaders()
// view #1
ViewCallback aView1;
int nView1 = SfxLokHelper::getView();
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView1);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView1);
CPPUNIT_ASSERT(!lcl_hasEditView(*pViewData));
// view #2
@@ -2129,7 +2133,7 @@ void ScTiledRenderingTest::testRowColumnHeaders()
int nView2 = SfxLokHelper::getView();
ViewCallback aView2;
pModelObj->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>());
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView2);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView2);
// ViewRowColumnHeaders test
SfxLokHelper::setView(nView1);
@@ -2160,9 +2164,9 @@ void ScTiledRenderingTest::testRowColumnHeaders()
CPPUNIT_ASSERT_EQUAL(aHeaders2, aHeaders2_2);
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView2);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
// Helper structs for setup and testing of ScModelObj::getSheetGeometryData()
@@ -2385,14 +2389,14 @@ void ScTiledRenderingTest::testSheetGeometryDataInvariance()
// view #1
ViewCallback aView1;
int nView1 = SfxLokHelper::getView();
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView1);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView1);
// view #2
SfxLokHelper::createView();
int nView2 = SfxLokHelper::getView();
ViewCallback aView2;
pModelObj->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>());
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView2);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView2);
// Try with the default empty document once (nIdx = 0) and then with sheet geometry settings (nIdx = 1)
for (size_t nIdx = 0; nIdx < 2; ++nIdx)
@@ -2424,9 +2428,9 @@ void ScTiledRenderingTest::testSheetGeometryDataInvariance()
}
SfxLokHelper::setView(nView1);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
SfxLokHelper::setView(nView2);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testSheetGeometryDataCorrectness()
@@ -2492,7 +2496,7 @@ void ScTiledRenderingTest::testSheetGeometryDataCorrectness()
// view #1
ViewCallback aView1;
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView1);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView1);
// with the default empty sheet and test the JSON encoding.
OString aGeomDefaultStr = pModelObj->getSheetGeometryData(/*bColumns*/ true, /*bRows*/ true, /*bSizes*/ true,
@@ -2505,7 +2509,7 @@ void ScTiledRenderingTest::testSheetGeometryDataCorrectness()
/*bHidden*/ true, /*bFiltered*/ true, /*bGroups*/ true);
aSGData.parseTest(aGeomStr);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testDeleteCellMultilineContent()
@@ -2521,7 +2525,7 @@ void ScTiledRenderingTest::testDeleteCellMultilineContent()
// view #1
ViewCallback aView1;
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView1);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView1);
CPPUNIT_ASSERT(!lcl_hasEditView(*pViewData));
aView1.m_sInvalidateHeader = "";
@@ -2539,7 +2543,7 @@ void ScTiledRenderingTest::testDeleteCellMultilineContent()
CPPUNIT_ASSERT_EQUAL(OString("row"), aView1.m_sInvalidateHeader);
sal_uInt16 nRow2Height = rDoc.GetRowHeight(static_cast<SCROW>(0), static_cast<SCTAB>(0), false);
CPPUNIT_ASSERT_EQUAL(nRow1Height, nRow2Height);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testPasteIntoWrapTextCell()
@@ -2561,7 +2565,7 @@ void ScTiledRenderingTest::testPasteIntoWrapTextCell()
CPPUNIT_ASSERT(pViewData);
ViewCallback aView;
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView);
CPPUNIT_ASSERT(!lcl_hasEditView(*pViewData));
ScTabViewShell* pView = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
@@ -2587,7 +2591,7 @@ void ScTiledRenderingTest::testPasteIntoWrapTextCell()
// SG invalidations for all
CPPUNIT_ASSERT_EQUAL(OString("all"), aView.m_sInvalidateSheetGeometry);
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testSortAscendingDescending()
@@ -2599,7 +2603,7 @@ void ScTiledRenderingTest::testSortAscendingDescending()
ScDocument* pDoc = pModelObj->GetDocument();
ViewCallback aView;
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView);
// select the values in the first column
pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, 551, 129, 1, MOUSE_LEFT, 0);
@@ -2712,7 +2716,7 @@ void ScTiledRenderingTest::testEditCursorBounds()
ScDocument* pDoc = pModelObj->GetDocument();
ViewCallback aView;
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView);
ScTabViewShell* pView = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
CPPUNIT_ASSERT(pView);
comphelper::LibreOfficeKit::setViewIdForVisCursorInvalidation(true);
@@ -2745,7 +2749,7 @@ void ScTiledRenderingTest::testEditCursorBounds()
CPPUNIT_ASSERT_MESSAGE("Edit cursor must be in cell bounds!",
aCellBounds.IsInside(aView.m_aInvalidateCursorResult.getBounds()));
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testTextSelectionBounds()
@@ -2757,7 +2761,7 @@ void ScTiledRenderingTest::testTextSelectionBounds()
ScDocument* pDoc = pModelObj->GetDocument();
ViewCallback aView;
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(&aView);
ScTabViewShell* pView = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
CPPUNIT_ASSERT(pView);
comphelper::LibreOfficeKit::setViewIdForVisCursorInvalidation(true);
@@ -2795,7 +2799,7 @@ void ScTiledRenderingTest::testTextSelectionBounds()
CPPUNIT_ASSERT_MESSAGE("Text selections must be in cell bounds!",
!aCellBounds.Intersection(aView.m_aTextSelectionResult.getBounds(0)).IsEmpty());
- SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+ SfxViewShell::Current()->setLibreOfficeKitViewCallback(nullptr);
}
void ScTiledRenderingTest::testSheetViewDataCrash()
diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx
index c41f08b0aca1..1d9ba69d6619 100644
--- a/sc/source/ui/view/tabview5.cxx
+++ b/sc/source/ui/view/tabview5.cxx
@@ -336,8 +336,7 @@ void ScTabView::TabChanged( bool bSameTabButMoved )
// Invalidate first
tools::Rectangle aRectangle(0, 0, 1000000000, 1000000000);
- OString sPayload = aRectangle.toString() + ", " + OString::number(aViewData.GetTabNo());
- pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_INVALIDATE_TILES, sPayload.getStr());
+ pViewShell->libreOfficeKitViewInvalidateTilesCallback(&aRectangle, aViewData.GetTabNo());
ScModelObj* pModel = comphelper::getUnoTunnelImplementation<ScModelObj>(pViewShell->GetCurrentDocument());
SfxLokHelper::notifyDocumentSizeChanged(pViewShell, sRect, pModel, false);