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 );

Reply via email to