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: