diff options
author | Henry Castro <hcastro@collabora.com> | 2016-09-23 17:14:29 -0400 |
---|---|---|
committer | Henry Castro <hcastro@collabora.com> | 2016-09-24 12:35:24 +0000 |
commit | 918834c04fd44fd863e34523dce73104e7d2232f (patch) | |
tree | 95bcfd34c195c868a637091dd03a4fc8a3e9f613 | |
parent | 88c7f08c49642ed14e62e96f63cae00ef608cbbb (diff) |
sc lok: avoid full invalidate tiles
Change-Id: Idd49dc61ba8dbd7af42f641bb019cf83814f9e8d
Reviewed-on: https://gerrit.libreoffice.org/29240
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Henry Castro <hcastro@collabora.com>
-rw-r--r-- | sc/qa/unit/tiledrendering/data/shape.ods | bin | 8804 -> 16283 bytes | |||
-rw-r--r-- | sc/qa/unit/tiledrendering/tiledrendering.cxx | 45 | ||||
-rw-r--r-- | svx/source/svdraw/sdrpaintwindow.cxx | 6 | ||||
-rw-r--r-- | svx/source/svdraw/svdmrkv.cxx | 2 |
4 files changed, 51 insertions, 2 deletions
diff --git a/sc/qa/unit/tiledrendering/data/shape.ods b/sc/qa/unit/tiledrendering/data/shape.ods Binary files differindex eeb89938f9d2..d2525f13cfe4 100644 --- a/sc/qa/unit/tiledrendering/data/shape.ods +++ b/sc/qa/unit/tiledrendering/data/shape.ods diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx index be1fac382791..eaffc6dbacc3 100644 --- a/sc/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx @@ -63,6 +63,7 @@ public: void testColRowResize(); void testUndoShells(); void testCreateViewGraphicSelection(); + void testGraphicInvalidate(); CPPUNIT_TEST_SUITE(ScTiledRenderingTest); CPPUNIT_TEST(testRowColumnSelections); @@ -77,6 +78,7 @@ public: CPPUNIT_TEST(testColRowResize); CPPUNIT_TEST(testUndoShells); CPPUNIT_TEST(testCreateViewGraphicSelection); + CPPUNIT_TEST(testGraphicInvalidate); CPPUNIT_TEST_SUITE_END(); private: @@ -381,6 +383,7 @@ public: bool m_bTextViewSelectionInvalidated; bool m_bGraphicSelection; bool m_bGraphicViewSelection; + bool m_bFullInvalidateTiles; bool m_bViewLock; ViewCallback() @@ -388,6 +391,7 @@ public: m_bViewCursorInvalidated(false), m_bTextViewSelectionInvalidated(false), m_bGraphicViewSelection(false), + m_bFullInvalidateTiles(false), m_bViewLock(false) { } @@ -434,6 +438,14 @@ public: m_bGraphicViewSelection = true; } break; + case LOK_CALLBACK_INVALIDATE_TILES: + { + std::string text(pPayload); + if (text.find("EMPTY") != std::string::npos) + { + m_bFullInvalidateTiles = true; + } + } } } }; @@ -663,6 +675,39 @@ void ScTiledRenderingTest::testCreateViewGraphicSelection() comphelper::LibreOfficeKit::setActive(false); } +void ScTiledRenderingTest::testGraphicInvalidate() +{ + // Load a document + comphelper::LibreOfficeKit::setActive(); + + // Load a document that has a shape and create two views. + ScModelObj* pModelObj = createDoc("shape.ods"); + ViewCallback aView; + SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView); + + // Click to select graphic + aView.m_bGraphicSelection = false; + pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, /*x=*/ 1,/*y=*/ 1,/*count=*/ 1, /*buttons=*/ 1, /*modifier=*/0); + pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP, /*x=*/ 1, /*y=*/ 1, /*count=*/ 1, /*buttons=*/ 1, /*modifier=*/0); + CPPUNIT_ASSERT(aView.m_bGraphicSelection); + + // Drag Drop graphic + aView.m_bGraphicSelection = false; + pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, /*x=*/ 1,/*y=*/ 1,/*count=*/ 1, /*buttons=*/ 1, /*modifier=*/0); + pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEMOVE, /*x=*/ 1,/*y=*/ 10,/*count=*/ 1, /*buttons=*/ 1, /*modifier=*/0); + pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP, /*x=*/ 1, /*y=*/ 10, /*count=*/ 1, /*buttons=*/ 1, /*modifier=*/0); + Scheduler::ProcessEventsToIdle(); + CPPUNIT_ASSERT(!aView.m_bFullInvalidateTiles); + + // Check again + Scheduler::ProcessEventsToIdle(); + CPPUNIT_ASSERT(!aView.m_bFullInvalidateTiles); + + mxComponent->dispose(); + mxComponent.clear(); + comphelper::LibreOfficeKit::setActive(false); +} + } CPPUNIT_TEST_SUITE_REGISTRATION(ScTiledRenderingTest); diff --git a/svx/source/svdraw/sdrpaintwindow.cxx b/svx/source/svdraw/sdrpaintwindow.cxx index c014ea9fc687..1f95e25f1423 100644 --- a/svx/source/svdraw/sdrpaintwindow.cxx +++ b/svx/source/svdraw/sdrpaintwindow.cxx @@ -17,6 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <comphelper/lok.hxx> #include <comphelper/random.hxx> #include <svx/sdrpaintwindow.hxx> #include <sdr/overlay/overlaymanagerbuffered.hxx> @@ -219,7 +220,10 @@ void SdrPaintWindow::impCreateOverlayManager() // Request a repaint so that the buffered overlay manager fills // its buffer properly. This is a workaround for missing buffer // updates. - rWindow.Invalidate(); + if (!comphelper::LibreOfficeKit::isActive()) + { + rWindow.Invalidate(); + } Color aColA(GetPaintView().getOptionsDrawinglayer().GetStripeColorA()); Color aColB(GetPaintView().getOptionsDrawinglayer().GetStripeColorB()); diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 402c61e4d40f..3cc38362255b 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -205,7 +205,7 @@ void SdrMarkView::ModelHasChanged() AdjustMarkHdl(); } - if (comphelper::LibreOfficeKit::isActive()) + if (comphelper::LibreOfficeKit::isActive() && GetMarkedObjectCount() > 0) { //TODO: Is MarkedObjRect valid at this point? Rectangle aSelection(GetMarkedObjRect()); |