editeng/source/editeng/impedit2.cxx   |    5 ++++-
 sc/qa/uitest/calc_tests9/tdf135761.py |   34 ++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletion(-)

New commits:
commit 9a612ce3d1d025d5f553cc348feaedeea37fc822
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Fri Jul 15 16:25:06 2022 +0200
Commit:     Andreas Heinisch <andreas.heini...@yahoo.de>
CommitDate: Sat Jul 23 12:35:25 2022 +0200

    tdf#135761 - Calc cell editing: change search preference for the word 
boundary
    
    Since ImpEditEngine::StartOfWord is only used when a selection is deleted 
at the left, change the search preference of the word boundary from forward to 
backward. For further details of a deletion of a selection check 
ImpEditEngine::DeleteLeftOrRight.
    
    Change-Id: Ic68901cc04e5057e058ff03304f68eef1dca7a1e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137108
    Tested-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>

diff --git a/editeng/source/editeng/impedit2.cxx 
b/editeng/source/editeng/impedit2.cxx
index c731932c51ec..8dbbc42f7ce7 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -1533,8 +1533,11 @@ EditPaM ImpEditEngine::StartOfWord( const EditPaM& rPaM )
     lang::Locale aLocale( GetLocale( aTmpPaM ) );
 
     uno::Reference < i18n::XBreakIterator > _xBI( ImplGetBreakIterator() );
+    // tdf#135761 - since this function is only used when a selection is 
deleted at the left,
+    // change the search preference of the word boundary from forward to 
backward.
+    // For further details of a deletion of a selection check 
ImpEditEngine::DeleteLeftOrRight.
     i18n::Boundary aBoundary = _xBI->getWordBoundary(
-        rPaM.GetNode()->GetString(), rPaM.GetIndex(), aLocale, 
css::i18n::WordType::ANYWORD_IGNOREWHITESPACES, true);
+        rPaM.GetNode()->GetString(), rPaM.GetIndex(), aLocale, 
css::i18n::WordType::ANYWORD_IGNOREWHITESPACES, false);
 
     aNewPaM.SetIndex( aBoundary.startPos );
     return aNewPaM;
diff --git a/sc/qa/uitest/calc_tests9/tdf135761.py 
b/sc/qa/uitest/calc_tests9/tdf135761.py
new file mode 100755
index 000000000000..fd9e5ebda341
--- /dev/null
+++ b/sc/qa/uitest/calc_tests9/tdf135761.py
@@ -0,0 +1,34 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+from uitest.framework import UITestCase
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from libreoffice.calc.document import get_cell_by_position
+
+class tdf135761(UITestCase):
+    def test_tdf135761_ctrl_backspace(self):
+        with self.ui_test.create_doc_in_start_center("calc") as document:
+            xCalcDoc = self.xUITest.getTopFocusWindow()
+            xGridWindow = xCalcDoc.getChild("grid_window")
+
+            # Enter text including two whitespaces in the text, and delete the 
left part of the text
+            xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": 
"A1"}))
+            xGridWindow.executeAction("TYPE", mkPropertyValues({"TEXT": "a  
b"}))
+            xGridWindow.executeAction("TYPE", 
mkPropertyValues({"KEYCODE":"F2"}))
+            xGridWindow.executeAction("TYPE", 
mkPropertyValues({"KEYCODE":"LEFT"}))
+            xGridWindow.executeAction("TYPE", 
mkPropertyValues({"KEYCODE":"LEFT"}))
+            xGridWindow.executeAction("TYPE", 
mkPropertyValues({"KEYCODE":"CTRL+BACKSPACE"}))
+            xGridWindow.executeAction("TYPE", 
mkPropertyValues({"KEYCODE":"RETURN"}))
+
+            # Without the fix in place, this test would have failed with
+            # AssertionError: ' b' != 'a b'
+
+            self.assertEqual(get_cell_by_position(document, 0, 0, 
0).getString(), " b")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:

Reply via email to