sc/inc/global.hxx            |    3 ++-
 sc/qa/extras/macros-test.cxx |   37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

New commits:
commit e8de03a18ed8684ed94d93b09aa1662ba799e877
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Mon Apr 10 19:44:38 2023 +0200
Commit:     Andreas Heinisch <andreas.heini...@yahoo.de>
CommitDate: Wed Apr 12 11:36:39 2023 +0200

    tdf#116127 - Add EDITATTR to ALL flags to check for valid function inputs
    
    Otherwise, the function clearcontents does not accept the EDITATTR flag as 
a valid input.
    
    Change-Id: I8381014da7110d060167a814d9ea02e347d5a92b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150191
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>

diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx
index 1e42e6060d0e..fb5af9e3e451 100644
--- a/sc/inc/global.hxx
+++ b/sc/inc/global.hxx
@@ -165,7 +165,8 @@ enum class InsertDeleteFlags : sal_uInt16
     FORGETCAPTIONS   = 0x2000,   /// Internal use only (d&d undo): do not 
delete caption objects of cell notes.
     ATTRIB           = HARDATTR | STYLES,
     CONTENTS         = VALUE | DATETIME | STRING | NOTE | FORMULA | OUTLINE | 
SPARKLINES,
-    ALL              = CONTENTS | ATTRIB | OBJECTS | SPARKLINES,
+    // tdf#116127 - add EDITATTR to ALL flags in order to check for valid 
function inputs
+    ALL              = CONTENTS | ATTRIB | OBJECTS | SPARKLINES | EDITATTR,
     /// Copy flags for auto/series fill functions: do not touch notes and 
drawing objects.
     AUTOFILL         = ALL & ~(NOTE | OBJECTS)
 };
diff --git a/sc/qa/extras/macros-test.cxx b/sc/qa/extras/macros-test.cxx
index ec41a2fbe4a9..caa788e7a1f6 100644
--- a/sc/qa/extras/macros-test.cxx
+++ b/sc/qa/extras/macros-test.cxx
@@ -911,6 +911,43 @@ CPPUNIT_TEST_FIXTURE(ScMacrosTest, testTdf147122)
     CPPUNIT_ASSERT_EQUAL(Any(OUString("This is a test")), aRet);
 }
 
+CPPUNIT_TEST_FIXTURE(ScMacrosTest, testTdf116127)
+{
+    mxComponent = loadFromDesktop("private:factory/scalc");
+
+    css::uno::Reference<css::document::XEmbeddedScripts> xDocScr(mxComponent, 
UNO_QUERY_THROW);
+    auto xLibs = xDocScr->getBasicLibraries();
+    auto xLibrary = xLibs->createLibrary("TestLibrary");
+    xLibrary->insertByName(
+        "TestModule",
+        uno::Any(OUString(
+            "Function TestClearContents\n"
+            // Insert test string into cell A1
+            "  oActiveSheet = ThisComponent.CurrentController.ActiveSheet\n"
+            "  oActiveCell = oActiveSheet.getCellRangeByName(\"A1\")\n"
+            "  oActiveCell.setString(\"Italic Test\")\n"
+            // Create a text cursor and and change the first letter to italic
+            "  oCursor = oActiveCell.Text.createTextCursor()\n"
+            "  oCursor.gotoStart(False)\n"
+            "  oCursor.goRight(1, True)\n"
+            "  oCursor.CharPosture = com.sun.star.awt.FontSlant.ITALIC\n"
+            // Clear contents using EDITATTR cell flag to clear the italic 
char posture
+            "  
oActiveCell.clearContents(com.sun.star.sheet.CellFlags.EDITATTR)\n"
+            // Check the char posture of the first letter
+            "  oCursor.gotoStart(False)\n"
+            "  oCursor.goRight(1, True)\n"
+            "  TestClearContents = oCursor.CharPosture <> 
com.sun.star.awt.FontSlant.ITALIC\n"
+            "End Function\n")));
+
+    Any aRet = 
executeMacro("vnd.sun.Star.script:TestLibrary.TestModule.TestClearContents?"
+                            "language=Basic&location=document");
+    // Without the fix in place, this test would have failed with
+    // - Expected : true
+    // - Actual   : false
+    // i.e. the formatting within parts of the cell contents (EDITATTR) were 
not deleted
+    CPPUNIT_ASSERT_EQUAL(Any(true), aRet);
+}
+
 ScMacrosTest::ScMacrosTest()
       : UnoApiXmlTest("/sc/qa/extras/testdocuments")
 {

Reply via email to