sc/qa/uitest/calc_tests9/tdf148437.py | 53 ++++++++++++++++++++++++++++++++++ sc/source/ui/view/tabvwshe.cxx | 3 + 2 files changed, 55 insertions(+), 1 deletion(-)
New commits: commit 66365e9fb2105c98f7bf16152fb4910f605dae78 Author: Andreas Heinisch <andreas.heini...@yahoo.de> AuthorDate: Sun Apr 10 18:36:01 2022 +0200 Commit: Andreas Heinisch <andreas.heini...@yahoo.de> CommitDate: Thu Apr 21 10:01:25 2022 +0200 tdf#148437 - Hyperlink: Replace entire content if cell contains a formula Inserting a hyperlink through the hyperlink dialog should replace the content of the entire cell if it contains a formula. Change-Id: I2e06f134bfcd21ec3fef76f2a9b80e433adce1f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132785 Tested-by: Jenkins Tested-by: Heiko Tietze <heiko.tie...@documentfoundation.org> Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org> diff --git a/sc/qa/uitest/calc_tests9/tdf148437.py b/sc/qa/uitest/calc_tests9/tdf148437.py new file mode 100644 index 000000000000..d457b2324892 --- /dev/null +++ b/sc/qa/uitest/calc_tests9/tdf148437.py @@ -0,0 +1,53 @@ +# -*- 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 +from uitest.uihelper.calc import enter_text_to_cell +from uitest.uihelper.common import get_state_as_dict, select_pos + +class tdf148437(UITestCase): + def test_tdf148437_formula_cell(self): + with self.ui_test.create_doc_in_start_center("calc") as document: + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") + + # Select a cell including a formula and insert a hyperlink + enter_text_to_cell(xGridWindow, "A1", "=HYPERLINK(\"www.libreoffice.org\";\"LibreOffice\")") + # Move focus to ensure cell is not in edit mode + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"})) + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"})) + with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog: + xTab = xDialog.getChild("tabcontrol") + select_pos(xTab, "0") + + # Text should contain the text of the cell + xTarget = xDialog.getChild("target") + self.assertEqual(get_state_as_dict(xTarget)["Text"], "") + xIndication = xDialog.getChild("indication") + self.assertEqual(get_state_as_dict(xIndication)["Text"], "LibreOffice") + + # Insert a sample hyperlink + xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "https://www.documentfoundation.org/"})) + xIndication.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"})) + xIndication.executeAction("TYPE", mkPropertyValues({"TEXT": "LibreOffice Document Foundation"})) + + # Move focus to ensure cell is not in edit mode + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"})) + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"})) + + # Check contents of the cell + xCell = get_cell_by_position(document, 0, 0, 0) + self.assertEqual(xCell.getString(), "LibreOffice Document Foundation") + xTextFields = xCell.getTextFields() + self.assertEqual(xTextFields.getCount(), 1) + self.assertEqual(xTextFields.getByIndex(0).URL, "https://www.documentfoundation.org/") + +# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sc/source/ui/view/tabvwshe.cxx b/sc/source/ui/view/tabvwshe.cxx index fa3587dd70cc..d32500b74800 100644 --- a/sc/source/ui/view/tabvwshe.cxx +++ b/sc/source/ui/view/tabvwshe.cxx @@ -92,7 +92,8 @@ OUString ScTabViewShell::GetSelectionText( bool bWholeWord ) } ScImportExport aObj( rDoc, aRange ); - aObj.SetFormulas( GetViewData().GetOptions().GetOption( VOPT_FORMULAS ) ); + // tdf#148437 - if cell contains a formula, overwrite entire content of the cell + aObj.SetFormulas(true); OUString aExportOUString; /* TODO: STRING_TSVC under some circumstances? */ aObj.ExportString( aExportOUString, SotClipboardFormatId::STRING );