sc/qa/unit/tiledrendering/data/small.ods |binary sc/qa/unit/tiledrendering/tiledrendering.cxx | 42 ++++++++++++++++++++++++--- sc/source/ui/view/tabview3.cxx | 7 +++- sw/source/core/view/viewsh.cxx | 4 +- 4 files changed, 46 insertions(+), 7 deletions(-)
New commits: commit 27aac319ca9f2d580aea45542c5d0428616f7e0b Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Jul 21 16:07:35 2016 +0200 sc: provide size in the payload of LOK_CALLBACK_DOCUMENT_SIZE_CHANGED The sw implementation does so, and the API documentation also says clients can depend on this. Change-Id: Ib4d25d7207fd8358de2ec1186d4ca2306e996497 Reviewed-on: https://gerrit.libreoffice.org/27379 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/sc/qa/unit/tiledrendering/data/small.ods b/sc/qa/unit/tiledrendering/data/small.ods new file mode 100644 index 0000000..ebaae64 Binary files /dev/null and b/sc/qa/unit/tiledrendering/data/small.ods differ diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx index e66585d..fb4759f 100644 --- a/sc/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx @@ -28,6 +28,7 @@ #include <svl/srchitem.hxx> #include <comphelper/lok.hxx> +#include <comphelper/propertyvalue.hxx> #include <sfx2/lokhelper.hxx> #include <tabvwsh.hxx> @@ -56,6 +57,7 @@ public: void testEmptyColumnSelection(); void testViewCursors(); void testTextViewSelection(); + void testDocumentSizeChanged(); CPPUNIT_TEST_SUITE(ScTiledRenderingTest); CPPUNIT_TEST(testRowColumnSelections); @@ -65,6 +67,7 @@ public: CPPUNIT_TEST(testEmptyColumnSelection); CPPUNIT_TEST(testViewCursors); CPPUNIT_TEST(testTextViewSelection); + CPPUNIT_TEST(testDocumentSizeChanged); CPPUNIT_TEST_SUITE_END(); private: @@ -74,6 +77,7 @@ private: /// document size changed callback. osl::Condition m_aDocSizeCondition; + Size m_aDocumentSize; uno::Reference<lang::XComponent> mxComponent; // TODO various test-related members - when needed @@ -144,12 +148,18 @@ static void lcl_convertRectangle(const OUString& rString, Rectangle& rRectangle) } */ -void ScTiledRenderingTest::callbackImpl(int nType, const char* /*pPayload*/) +void ScTiledRenderingTest::callbackImpl(int nType, const char* pPayload) { switch (nType) { case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED: { + OString aPayload(pPayload); + sal_Int32 nIndex = 0; + OString aToken = aPayload.getToken(0, ',', nIndex); + m_aDocumentSize.setWidth(aToken.toInt32()); + aToken = aPayload.getToken(0, ',', nIndex); + m_aDocumentSize.setHeight(aToken.toInt32()); m_aDocSizeCondition.set(); } break; @@ -419,7 +429,7 @@ void ScTiledRenderingTest::testViewCursors() comphelper::LibreOfficeKit::setActive(false); } -void lcl_dispatchCommand(const uno::Reference<lang::XComponent>& xComponent, const OUString& rCommand) +void lcl_dispatchCommand(const uno::Reference<lang::XComponent>& xComponent, const OUString& rCommand, const uno::Sequence<beans::PropertyValue>& rArguments) { uno::Reference<frame::XController> xController = uno::Reference<frame::XModel>(xComponent, uno::UNO_QUERY)->getCurrentController(); CPPUNIT_ASSERT(xController.is()); @@ -430,7 +440,7 @@ void lcl_dispatchCommand(const uno::Reference<lang::XComponent>& xComponent, con uno::Reference<frame::XDispatchHelper> xDispatchHelper(frame::DispatchHelper::create(xContext)); CPPUNIT_ASSERT(xDispatchHelper.is()); - xDispatchHelper->executeDispatch(xFrame, rCommand, OUString(), 0, {}); + xDispatchHelper->executeDispatch(xFrame, rCommand, OUString(), 0, rArguments); } void ScTiledRenderingTest::testTextViewSelection() @@ -448,7 +458,7 @@ void ScTiledRenderingTest::testTextViewSelection() // Create a selection on two cells in the second view, that's a text selection in LOK terms. aView1.m_bTextViewSelectionInvalidated = false; - lcl_dispatchCommand(mxComponent, ".uno:GoRightSel"); + lcl_dispatchCommand(mxComponent, ".uno:GoRightSel", {}); Scheduler::ProcessEventsToIdle(); // Make sure the first view got its notification. CPPUNIT_ASSERT(aView1.m_bTextViewSelectionInvalidated); @@ -458,6 +468,30 @@ void ScTiledRenderingTest::testTextViewSelection() comphelper::LibreOfficeKit::setActive(false); } +void ScTiledRenderingTest::testDocumentSizeChanged() +{ + comphelper::LibreOfficeKit::setActive(); + + // Load a document that doesn't have much content. + createDoc("small.ods"); + SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ScTiledRenderingTest::callback, this); + + // Go to the A30 cell -- that will extend the document size. + uno::Sequence<beans::PropertyValue> aPropertyValues = + { + comphelper::makePropertyValue("ToPoint", OUString("$A$30")), + }; + lcl_dispatchCommand(mxComponent, ".uno:GoToCell", aPropertyValues); + Scheduler::ProcessEventsToIdle(); + // Assert that the size in the payload is not 0. + CPPUNIT_ASSERT(m_aDocumentSize.getWidth() > 0); + CPPUNIT_ASSERT(m_aDocumentSize.getHeight() > 0); + + mxComponent->dispose(); + mxComponent.clear(); + comphelper::LibreOfficeKit::setActive(false); +} + } CPPUNIT_TEST_SUITE_REGISTRATION(ScTiledRenderingTest); diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index 698c356..459ab62 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -322,7 +322,12 @@ void ScTabView::SetCursor( SCCOL nPosX, SCROW nPosY, bool bNew ) if (pDocSh) { - aViewData.GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, ""); + // Provide size in the payload, so clients don't have to + // call lok::Document::getDocumentSize(). + std::stringstream ss; + ss << aNewSize.Width() << ", " << aNewSize.Height(); + OString sSize = ss.str().c_str(); + aViewData.GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, sSize.getStr()); // New area extended to the right of the sheet after last column // including overlapping area with aNewRowArea diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index 118e224..6c8a94b 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -1010,8 +1010,8 @@ void SwViewShell::SizeChgNotify() Size aDocSize = GetDocSize(); std::stringstream ss; ss << aDocSize.Width() + 2L * DOCUMENTBORDER << ", " << aDocSize.Height() + 2L * DOCUMENTBORDER; - OString sRect = ss.str().c_str(); - GetSfxViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, sRect.getStr()); + OString sSize = ss.str().c_str(); + GetSfxViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, sSize.getStr()); } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits