diff options
-rw-r--r-- | cui/source/tabpages/numpages.cxx | 2 | ||||
-rw-r--r-- | sw/qa/uitest/writer_tests7/tdf144439.py | 93 | ||||
-rw-r--r-- | sw/source/ui/misc/outline.cxx | 7 |
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; |