summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2018-02-26 05:37:44 +0100
committerJan Holesovsky <kendy@collabora.com>2018-02-26 12:29:43 +0100
commitec2b7cc3651e727d2d932edf2dac8c1d881279ac (patch)
tree5a2ea55377bb5d50a9eec7f2c4c697b41723f9a6
parent743aee0ad16449ba0ecf506e0a650b45b89628bc (diff)
sd lok: Delete selection highlight after cutting text.
Call drawing also after the new selection is set, similar to other cases where DrawSelectionXOR() is called before and after selection change. In desktop LO drawing is always called again and again by timeout, so there the selection is updated anyway, while in LO online painting does not emit a notification. Reviewed-on: https://gerrit.libreoffice.org/50268 Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> Tested-by: Tamás Zolnai <tamas.zolnai@collabora.com> (cherry picked from commit 56629f9797fa1cf8b7c86b93ee2ea62673444c94) Remove accidently committed debug lines (cherry picked from commit c64f2d34c0e62ec288b2e1453bf91f9f650db845) Change-Id: Id083a3bb38ba89e00239e71387377691afd4f31c Reviewed-on: https://gerrit.libreoffice.org/50335 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
-rw-r--r--editeng/source/editeng/impedit.cxx3
-rw-r--r--sd/qa/unit/tiledrendering/data/cut_selection_change.odpbin0 -> 10983 bytes
-rw-r--r--sd/qa/unit/tiledrendering/tiledrendering.cxx42
3 files changed, 45 insertions, 0 deletions
diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx
index eec47351b8e9..644317c4509a 100644
--- a/editeng/source/editeng/impedit.cxx
+++ b/editeng/source/editeng/impedit.cxx
@@ -1424,6 +1424,9 @@ void ImpEditView::DeleteSelected()
pEditEngine->pImpEditEngine->UndoActionEnd( EDITUNDO_DELETE );
SetEditSelection( EditSelection( aPaM, aPaM ) );
+
+ DrawSelection();
+
pEditEngine->pImpEditEngine->FormatAndUpdate( GetEditViewPtr() );
ShowCursor( DoAutoScroll(), true );
}
diff --git a/sd/qa/unit/tiledrendering/data/cut_selection_change.odp b/sd/qa/unit/tiledrendering/data/cut_selection_change.odp
new file mode 100644
index 000000000000..19d3a18480e2
--- /dev/null
+++ b/sd/qa/unit/tiledrendering/data/cut_selection_change.odp
Binary files differ
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index f2372fc711a7..73e1e2e629bc 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -104,6 +104,7 @@ public:
void testDefaultView();
void testIMESupport();
void testPasteTextOnSlide();
+ void testCutSelectionChange();
CPPUNIT_TEST_SUITE(SdTiledRenderingTest);
CPPUNIT_TEST(testRegisterCallback);
@@ -146,6 +147,7 @@ public:
CPPUNIT_TEST(testDefaultView);
CPPUNIT_TEST(testIMESupport);
CPPUNIT_TEST(testPasteTextOnSlide);
+ CPPUNIT_TEST(testCutSelectionChange);
CPPUNIT_TEST_SUITE_END();
@@ -2034,6 +2036,46 @@ void SdTiledRenderingTest::testPasteTextOnSlide()
comphelper::LibreOfficeKit::setActive(false);
}
+void SdTiledRenderingTest::testCutSelectionChange()
+{
+ // Load the document.
+ comphelper::LibreOfficeKit::setActive();
+ SdXImpressDocument* pXImpressDocument = createDoc("cut_selection_change.odp");
+ CPPUNIT_ASSERT(pXImpressDocument);
+
+ sd::ViewShell* pViewShell = pXImpressDocument->GetDocShell()->GetViewShell();
+ pViewShell->GetViewShellBase().registerLibreOfficeKitViewCallback(&SdTiledRenderingTest::callback, this);
+ Scheduler::ProcessEventsToIdle();
+
+ // Select first text object
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::TAB);
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::TAB);
+ Scheduler::ProcessEventsToIdle();
+
+ // step into text editing
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, '1', 0);
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, '1', 0);
+ Scheduler::ProcessEventsToIdle();
+
+ // select some text
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_LEFT | KEY_SHIFT);
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_LEFT | KEY_SHIFT);
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_LEFT | KEY_SHIFT);
+ pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_LEFT | KEY_SHIFT);
+ Scheduler::ProcessEventsToIdle();
+
+ // Check that we have a selection before cutting
+ CPPUNIT_ASSERT_EQUAL(static_cast<std::size_t>(1), m_aSelection.size());
+
+ // Cut the selected text
+ comphelper::dispatchCommand(".uno:Cut", uno::Sequence<beans::PropertyValue>());
+ Scheduler::ProcessEventsToIdle();
+
+ // Selection is removed
+ CPPUNIT_ASSERT_EQUAL(static_cast<std::size_t>(0), m_aSelection.size());
+ comphelper::LibreOfficeKit::setActive(false);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdTiledRenderingTest);
CPPUNIT_PLUGIN_IMPLEMENT();