diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2021-09-24 11:25:27 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2021-10-15 13:41:04 +0200 |
commit | abb8d6e97029b1e344de04db31e3f616360e52aa (patch) | |
tree | 514a28b9b4b152f9ba1901668026f2274e7205b2 /sc | |
parent | e10b8707d01ff2a31f0d62641eb45adc9f7fde92 (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.cxx | 154 | ||||
-rw-r--r-- | sc/source/ui/view/tabview5.cxx | 3 |
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); |