summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/qa/extras/tiledrendering/data/pagedown-invalidation.odtbin0 -> 8528 bytes
-rw-r--r--sw/qa/extras/tiledrendering/tiledrendering.cxx26
-rw-r--r--sw/source/uibase/uiview/viewport.cxx6
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
new file mode 100644
index 000000000000..0cad2d270ae0
--- /dev/null
+++ b/sw/qa/extras/tiledrendering/data/pagedown-invalidation.odt
Binary files differ
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() ));