[Libreoffice-commits] core.git: editeng/source sd/qa

Tamás Zolnai tamas.zolnai at collabora.com
Sat Feb 24 12:09:55 UTC 2018


 editeng/source/editeng/impedit.cxx                      |    3 +
 sd/qa/unit/tiledrendering/data/cut_selection_change.odp |binary
 sd/qa/unit/tiledrendering/tiledrendering.cxx            |   47 ++++++++++++++++
 3 files changed, 50 insertions(+)

New commits:
commit 56629f9797fa1cf8b7c86b93ee2ea62673444c94
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
Date:   Sat Feb 24 04:44:20 2018 +0100

    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.
    
    Change-Id: I6e9337fc0cfb61656387ba44d901521c3dfa60dd
    Reviewed-on: https://gerrit.libreoffice.org/50268
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    Tested-by: Tamás Zolnai <tamas.zolnai at collabora.com>

diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx
index 80566aaab1a0..dd21886c78e1 100644
--- a/editeng/source/editeng/impedit.cxx
+++ b/editeng/source/editeng/impedit.cxx
@@ -1461,6 +1461,9 @@ void ImpEditView::DeleteSelected()
     pEditEngine->pImpEditEngine->UndoActionEnd();
 
     SetEditSelection( EditSelection( aPaM, aPaM ) );
+
+    DrawSelectionXOR();
+
     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
Binary files /dev/null and b/sd/qa/unit/tiledrendering/data/cut_selection_change.odp differ
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 7c95dede1b90..9f4c94035674 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -114,6 +114,7 @@ public:
     void testPasteTextOnSlide();
     void testTdf115873();
     void testTdf115873Group();
+    void testCutSelectionChange();
 
     CPPUNIT_TEST_SUITE(SdTiledRenderingTest);
     CPPUNIT_TEST(testRegisterCallback);
@@ -159,6 +160,7 @@ public:
     CPPUNIT_TEST(testPasteTextOnSlide);
     CPPUNIT_TEST(testTdf115873);
     CPPUNIT_TEST(testTdf115873Group);
+    CPPUNIT_TEST(testCutSelectionChange);
 
     CPPUNIT_TEST_SUITE_END();
 
@@ -2177,6 +2179,51 @@ void SdTiledRenderingTest::testTdf115873Group()
     CPPUNIT_ASSERT(pObjects->IsEqualToDoc(pXImpressDocument->GetDoc()));
 }
 
+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());
+
+    utl::TempFile* pNewTempFile(new utl::TempFile);
+    FileFormat* pFormat = getFormat(ODP);
+    save(pXImpressDocument->GetDocShell(), pFormat, *pNewTempFile);
+
+    comphelper::LibreOfficeKit::setActive(false);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdTiledRenderingTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();


More information about the Libreoffice-commits mailing list