[Libreoffice-commits] core.git: cui/source sw/qa sw/source

Vasily Melenchuk (via logerrit) logerrit at kemper.freedesktop.org
Mon Oct 4 13:31:14 UTC 2021


 cui/source/tabpages/numpages.cxx        |    2 
 sw/qa/uitest/writer_tests7/tdf144439.py |   93 ++++++++++++++++++++++++++++++++
 sw/source/ui/misc/outline.cxx           |    7 --
 3 files changed, 97 insertions(+), 5 deletions(-)

New commits:
commit 54cc6c21c8669ce1b8e8bdaa5920a274cc8a9d4b
Author:     Vasily Melenchuk <vasily.melenchuk at cib.de>
AuthorDate: Fri Sep 24 15:57:07 2021 +0300
Commit:     Vasily Melenchuk <vasily.melenchuk at cib.de>
CommitDate: Mon Oct 4 15:30:38 2021 +0200

    tdf#144439: generate list format string on level change
    
    Changed values for included upper levels should cause
    generation of new list format string.
    
    Same applies to outlines editing.
    
    Change-Id: I90e19d6b5169f68c83ae3e55ec41b9016623d8ed
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122590
    Tested-by: Jenkins
    Reviewed-by: Vasily Melenchuk <vasily.melenchuk at cib.de>

diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx
index 2761d418fa5c..53711e06f266 100644
--- a/cui/source/tabpages/numpages.cxx
+++ b/cui/source/tabpages/numpages.cxx
@@ -1618,6 +1618,8 @@ IMPL_LINK(SvxNumOptionsTabPage, AllLevelHdl_Impl, weld::SpinButton&, rBox, void)
         {
             SvxNumberFormat aNumFmt(pActNum->GetLevel(e));
             aNumFmt.SetIncludeUpperLevels(static_cast<sal_uInt8>(std::min(rBox.get_value(), int(e + 1))) );
+            // Set the same prefix/suffix to generate list format with changed IncludedUpperLevels
+            aNumFmt.SetListFormat(aNumFmt.GetPrefix(), aNumFmt.GetSuffix(), e);
             pActNum->SetLevel(e, aNumFmt);
         }
         nMask <<= 1;
diff --git a/sw/qa/uitest/writer_tests7/tdf144439.py b/sw/qa/uitest/writer_tests7/tdf144439.py
new file mode 100644
index 000000000000..6797260f7240
--- /dev/null
+++ b/sw/qa/uitest/writer_tests7/tdf144439.py
@@ -0,0 +1,93 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# 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 type_text, select_by_text, select_pos, get_state_as_dict
+
+class tdf144439(UITestCase):
+
+    def test_tdf144439_list(self):
+        with self.ui_test.create_doc_in_start_center("writer") as document:
+            xWriterDoc = self.xUITest.getTopFocusWindow()
+            xWriterEdit = xWriterDoc.getChild("writer_edit")
+            # Enter some text
+            type_text(xWriterEdit, "List item")
+            # Apply numbering
+            self.xUITest.executeCommand(".uno:DefaultNumbering")
+            # Increase level up to 2
+            self.xUITest.executeCommand(".uno:IncrementIndent")
+
+            with self.ui_test.execute_dialog_through_command(".uno:BulletsAndNumberingDialog") as xDialog:
+                # Select custom tab
+                xTabs = xDialog.getChild("tabcontrol")
+                select_pos(xTabs, "5")
+
+                # Select numbering
+                xNumFmt = xDialog.getChild("numfmtlb")
+                select_by_text(xNumFmt, "1, 2, 3, ...")
+
+                # Increase number of sublevels to show
+                xSubLevels = xDialog.getChild("sublevels")
+                xSubLevels.executeAction("UP", tuple())
+
+            Paragraphs = document.Text.createEnumeration()
+            Para1 = Paragraphs.nextElement()
+            self.assertEqual(Para1.String, "List item")
+            self.assertEqual(Para1.getPropertyValue("ListLabelString"), "1.1.")
+
+    def test_tdf144439_outline(self):
+        with self.ui_test.create_doc_in_start_center("writer") as document:
+            xWriterDoc = self.xUITest.getTopFocusWindow()
+            xWriterEdit = xWriterDoc.getChild("writer_edit")
+            # Enter some text
+            type_text(xWriterEdit, "Outline2")
+            # Apply outline level 2 (as a style)
+            self.xUITest.executeCommand(".uno:StyleApply?Style:string=Heading%202&FamilyName:string=ParagraphStyles")
+
+            with self.ui_test.execute_dialog_through_command(".uno:ChapterNumberingDialog") as xDialog:
+                # Select level "2"
+                xLevel = xDialog.getChild("level")
+                xLevel2 = xLevel.getChild("1")
+                xLevel2.executeAction("SELECT", tuple())
+                self.assertEqual("2", get_state_as_dict(xLevel)['SelectEntryText'])
+
+                # Select custom tab
+                xTab = xDialog.getChild("tabcontrol")
+                select_pos(xTab, "0")
+
+                # Select numbering
+                xNumFmt = xDialog.getChild("numbering")
+                select_by_text(xNumFmt, "1, 2, 3, ...")
+
+                # Increase number of sublevels to show
+                xSubLevels = xDialog.getChild("sublevelsnf")
+                xSubLevels.executeAction("UP", tuple())
+
+            Paragraphs = document.Text.createEnumeration()
+            Para1 = Paragraphs.nextElement()
+            self.assertEqual(Para1.String, "Outline2")
+            # Well, this looks strange, but we asked to show 1 & 2 levels and 1st is without numbering
+            self.assertEqual(Para1.getPropertyValue("ListLabelString"), ".1")
+
+            with self.ui_test.execute_dialog_through_command(".uno:ChapterNumberingDialog") as xDialog:
+                # Select level "1"
+                xLevel = xDialog.getChild("level")
+                xLevel2 = xLevel.getChild("0")
+                xLevel2.executeAction("SELECT", tuple())
+                self.assertEqual("1", get_state_as_dict(xLevel)['SelectEntryText'])
+
+                # Select custom tab
+                xTab = xDialog.getChild("tabcontrol")
+                select_pos(xTab, "0")
+
+                # Select numbering
+                xNumFmt = xDialog.getChild("numbering")
+                select_by_text(xNumFmt, "1, 2, 3, ...")
+
+            self.assertEqual(Para1.String, "Outline2")
+            self.assertEqual(Para1.getPropertyValue("ListLabelString"), "1.1")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sw/source/ui/misc/outline.cxx b/sw/source/ui/misc/outline.cxx
index 506388528608..c7fa599c9bfa 100644
--- a/sw/source/ui/misc/outline.cxx
+++ b/sw/source/ui/misc/outline.cxx
@@ -555,11 +555,8 @@ IMPL_LINK(SwOutlineSettingsTabPage, ToggleComplete, weld::SpinButton&, rEdit, vo
             SwNumFormat aNumFormat(pNumRule->Get(i));
             aNumFormat.SetIncludeUpperLevels( std::min( static_cast<sal_uInt8>(rEdit.get_value()),
                                                 static_cast<sal_uInt8>(i + 1)) );
-            if (aNumFormat.HasListFormat())
-            {
-                aNumFormat.SetListFormat();  // clear custom format
-                m_xAllLevelNF->set_min(1);
-            }
+            // Set the same prefix/suffix to generate list format with changed IncludedUpperLevels
+            aNumFormat.SetListFormat(aNumFormat.GetPrefix(), aNumFormat.GetSuffix(), i);
             pNumRule->Set(i, aNumFormat);
         }
         nMask <<= 1;


More information about the Libreoffice-commits mailing list