From 0450c7177f61ba5be15f7b4175b9fb5e89f850ae Mon Sep 17 00:00:00 2001 From: Baole Fang Date: Sun, 28 May 2023 10:28:24 -0400 Subject: [PATCH] tdf#132026: Fix selection in text cell Change-Id: Ic2bf869efa198cba83d1b781b419c3a9e0e606f3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152356 Tested-by: Jenkins Reviewed-by: Mike Kaganski --- sc/qa/uitest/calc_tests8/tdf132026.py | 44 ++++++++++++++++++++++++++ sc/qa/uitest/data/tdf132026.ods | Bin 0 -> 10130 bytes sc/source/ui/view/tabvwsha.cxx | 12 +++++-- 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 sc/qa/uitest/calc_tests8/tdf132026.py create mode 100644 sc/qa/uitest/data/tdf132026.ods diff --git a/sc/qa/uitest/calc_tests8/tdf132026.py b/sc/qa/uitest/calc_tests8/tdf132026.py new file mode 100644 index 000000000000..abd3a86e720b --- /dev/null +++ b/sc/qa/uitest/calc_tests8/tdf132026.py @@ -0,0 +1,44 @@ +# -*- 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 uitest.uihelper.common import get_url_for_data_file +from libreoffice.calc.document import get_cell_by_position +from libreoffice.uno.propertyvalue import mkPropertyValues + +class tdf132026(UITestCase): + + def test_tdf132026(self): + with self.ui_test.load_file(get_url_for_data_file("tdf132026.ods")) as calc_doc: + MainWindow = self.xUITest.getTopFocusWindow() + grid_window = MainWindow.getChild("grid_window") + + chars=["=","+","-"] + directions=["UP","DOWN","LEFT","RIGHT"] + + # format general, should select cell + for c in chars: + sign=-1 if c=="-" else 1 + for i,direction in enumerate(directions): + grid_window.executeAction("SELECT", mkPropertyValues({"CELL": "B2"})) + grid_window.executeAction("TYPE", mkPropertyValues({"TEXT": c})) + grid_window.executeAction("TYPE", mkPropertyValues({"KEYCODE": direction})) + grid_window.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) + self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 1).getString(), str(sign*(i+1))) + + # format text, shouldn't select cell + for c in chars: + for direction in directions: + grid_window.executeAction("SELECT", mkPropertyValues({"CELL": "E2"})) + grid_window.executeAction("TYPE", mkPropertyValues({"TEXT": c})) + grid_window.executeAction("TYPE", mkPropertyValues({"KEYCODE": direction})) + grid_window.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) + self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 1).getString(), c) + +# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sc/qa/uitest/data/tdf132026.ods b/sc/qa/uitest/data/tdf132026.ods new file mode 100644 index 0000000000000000000000000000000000000000..03c6c654fdc57d4cbd4143397c9d089c5c1ecc02 GIT binary patch literal 10130 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 literal 0 HcmV?d00001 diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx index 4021f1937f91..f1305672a096 100644 --- a/sc/source/ui/view/tabvwsha.cxx +++ b/sc/source/ui/view/tabvwsha.cxx @@ -640,13 +640,19 @@ bool ScTabViewShell::IsRefInputMode() const ScInputHandler* pHdl = pScMod->GetInputHdl(); if ( pHdl ) { + const ScViewData& rViewData = GetViewData(); + ScDocument& rDoc = rViewData.GetDocument(); + const ScAddress aPos( rViewData.GetCurPos() ); + const sal_uInt32 nIndex = rDoc.GetAttr(aPos, ATTR_VALUE_FORMAT )->GetValue(); + const SvNumFormatType nType = rDoc.GetFormatTable()->GetType(nIndex); + if (nType == SvNumFormatType::TEXT) + { + return false; + } OUString aString = pHdl->GetEditString(); if ( !pHdl->GetSelIsRef() && aString.getLength() > 1 && ( aString[0] == '+' || aString[0] == '-' ) ) { - const ScViewData& rViewData = GetViewData(); - ScDocument& rDoc = rViewData.GetDocument(); - const ScAddress aPos( rViewData.GetCurPos() ); ScCompiler aComp( rDoc, aPos, rDoc.GetGrammar() ); aComp.SetCloseBrackets( false ); std::unique_ptr pArr(aComp.CompileString(aString));