summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/tabpages/numpages.cxx2
-rw-r--r--sw/qa/uitest/writer_tests7/tdf144439.py93
-rw-r--r--sw/source/ui/misc/outline.cxx7
3 files changed, 97 insertions, 5 deletions
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;