diff options
-rw-r--r-- | sw/qa/extras/tiledrendering/data/pagedown-invalidation.odt | bin | 0 -> 8528 bytes | |||
-rw-r--r-- | sw/qa/extras/tiledrendering/tiledrendering.cxx | 26 | ||||
-rw-r--r-- | sw/source/uibase/uiview/viewport.cxx | 6 |
3 files changed, 30 insertions, 2 deletions
diff --git a/sw/qa/extras/tiledrendering/data/pagedown-invalidation.odt b/sw/qa/extras/tiledrendering/data/pagedown-invalidation.odt Binary files differnew file mode 100644 index 000000000000..0cad2d270ae0 --- /dev/null +++ b/sw/qa/extras/tiledrendering/data/pagedown-invalidation.odt diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx index 48757af68504..240899c602c0 100644 --- a/sw/qa/extras/tiledrendering/tiledrendering.cxx +++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx @@ -54,6 +54,7 @@ public: void testDocumentSizeChanged(); void testSearchAll(); void testSearchAllNotifications(); + void testPageDownInvalidation(); CPPUNIT_TEST_SUITE(SwTiledRenderingTest); CPPUNIT_TEST(testRegisterCallback); @@ -70,6 +71,7 @@ public: CPPUNIT_TEST(testDocumentSizeChanged); CPPUNIT_TEST(testSearchAll); CPPUNIT_TEST(testSearchAllNotifications); + CPPUNIT_TEST(testPageDownInvalidation); CPPUNIT_TEST_SUITE_END(); private: @@ -84,12 +86,14 @@ private: std::vector<int> m_aSearchResultPart; int m_nSelectionBeforeSearchResult; int m_nSelectionAfterSearchResult; + int m_nInvalidations; }; SwTiledRenderingTest::SwTiledRenderingTest() : m_bFound(true), m_nSelectionBeforeSearchResult(0), - m_nSelectionAfterSearchResult(0) + m_nSelectionAfterSearchResult(0), + m_nInvalidations(0) { } @@ -125,6 +129,7 @@ void SwTiledRenderingTest::callbackImpl(int nType, const char* pPayload) m_aInvalidation.setWidth(aSeq[2].toInt32()); m_aInvalidation.setHeight(aSeq[3].toInt32()); } + ++m_nInvalidations; } break; case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED: @@ -494,6 +499,25 @@ void SwTiledRenderingTest::testSearchAllNotifications() comphelper::LibreOfficeKit::setActive(false); } +void SwTiledRenderingTest::testPageDownInvalidation() +{ + comphelper::LibreOfficeKit::setActive(); + + SwXTextDocument* pXTextDocument = createDoc("pagedown-invalidation.odt"); + uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence( + { + {".uno:HideWhitespace", uno::makeAny(true)}, + })); + pXTextDocument->initializeForTiledRendering(aPropertyValues); + pXTextDocument->registerCallback(&SwTiledRenderingTest::callback, this); + comphelper::dispatchCommand(".uno:PageDown", uno::Sequence<beans::PropertyValue>()); + + // This was 2. + CPPUNIT_ASSERT_EQUAL(0, m_nInvalidations); + + comphelper::LibreOfficeKit::setActive(false); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwTiledRenderingTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/uibase/uiview/viewport.cxx b/sw/source/uibase/uiview/viewport.cxx index db2548a80b0b..39e908d21f85 100644 --- a/sw/source/uibase/uiview/viewport.cxx +++ b/sw/source/uibase/uiview/viewport.cxx @@ -49,6 +49,7 @@ #include <IDocumentSettingAccess.hxx> #include <basegfx/tools/zoomtools.hxx> +#include <comphelper/lok.hxx> // The SetVisArea of the DocShell must not be called from InnerResizePixel. // But our adjustments must take place. @@ -212,7 +213,10 @@ m_aDocSz = rSz; void SwView::SetVisArea( const Rectangle &rRect, bool bUpdateScrollbar ) { - const Size aOldSz( m_aVisArea.GetSize() ); + Size aOldSz( m_aVisArea.GetSize() ); + if (comphelper::LibreOfficeKit::isActive() && m_pWrtShell) + // If m_pWrtShell's visible area is the whole document, do the same here. + aOldSz = m_pWrtShell->VisArea().SSize(); const Point aTopLeft( AlignToPixel( rRect.TopLeft() )); const Point aBottomRight( AlignToPixel( rRect.BottomRight() )); |