summaryrefslogtreecommitdiff
path: root/sw/qa
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2016-08-15 17:27:45 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-08-15 20:00:56 +0200
commit40231526b6a0d6d8713932b3ae60d665f615833c (patch)
tree973dc78c6ff6935a02efb1ea252b9b0060a4862a /sw/qa
parentbf882eb5719ed1d1119a1ec8f2f7cad32af39322 (diff)
sw lok: limit undo/redo in SwDrawTextShell
So that one view can only undo/redo its own changes. This is used when editing shape text, as that doesn't use sw::UndoManager::GetLastUndoInfo(). Change-Id: Ibc3d6fcbd18398569190f06ed9b7399c54bb7d41
Diffstat (limited to 'sw/qa')
-rw-r--r--sw/qa/extras/tiledrendering/tiledrendering.cxx34
1 files changed, 34 insertions, 0 deletions
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 504de6c5321f..c568ddf3c9ca 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -61,6 +61,7 @@ public:
void testTextEditViewInvalidations();
void testUndoInvalidations();
void testUndoLimiting();
+ void testUndoShapeLimiting();
void testUndoDispatch();
void testUndoRepairDispatch();
void testShapeTextUndoShells();
@@ -91,6 +92,7 @@ public:
CPPUNIT_TEST(testTextEditViewInvalidations);
CPPUNIT_TEST(testUndoInvalidations);
CPPUNIT_TEST(testUndoLimiting);
+ CPPUNIT_TEST(testUndoShapeLimiting);
CPPUNIT_TEST(testUndoDispatch);
CPPUNIT_TEST(testUndoRepairDispatch);
CPPUNIT_TEST(testShapeTextUndoShells);
@@ -927,6 +929,38 @@ void SwTiledRenderingTest::testUndoLimiting()
comphelper::LibreOfficeKit::setActive(false);
}
+void SwTiledRenderingTest::testUndoShapeLimiting()
+{
+ // Load a document and create a view.
+ comphelper::LibreOfficeKit::setActive();
+ SwXTextDocument* pXTextDocument = createDoc("shape.fodt");
+ SwWrtShell* pWrtShell1 = pXTextDocument->GetDocShell()->GetWrtShell();
+ SfxLokHelper::createView();
+ pXTextDocument->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>());
+ SwWrtShell* pWrtShell2 = pXTextDocument->GetDocShell()->GetWrtShell();
+
+ // Start shape text in the second view.
+ SdrPage* pPage = pWrtShell2->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
+ SdrObject* pObject = pPage->GetObj(0);
+ SdrView* pView = pWrtShell2->GetDrawView();
+ pWrtShell2->GetView().BeginTextEdit(pObject, pView->GetSdrPageView(), pWrtShell2->GetWin());
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 'x', 0);
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 'x', 0);
+
+ // Assert that the first view can't and the second view can undo the insertion.
+ SwDoc* pDoc = pXTextDocument->GetDocShell()->GetDoc();
+ sw::UndoManager& rUndoManager = pDoc->GetUndoManager();
+ rUndoManager.SetView(&pWrtShell1->GetView());
+ // This was 1: first view could undo the change of the second view.
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rUndoManager.GetUndoActionCount());
+ rUndoManager.SetView(&pWrtShell2->GetView());
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rUndoManager.GetUndoActionCount());
+
+ pWrtShell2->EndTextEdit();
+ rUndoManager.SetView(nullptr);
+ comphelper::LibreOfficeKit::setActive(false);
+}
+
void SwTiledRenderingTest::testUndoDispatch()
{
// Load a document and create two views.