From 998e5b53478a20ddbda66e92d8fd6ad73412ff57 Mon Sep 17 00:00:00 2001 From: luigiiucci Date: Thu, 15 Jun 2023 23:31:26 +0200 Subject: [PATCH] tdf#62032 use style list level when changing style If a style S1 has a list level L1, and we change the style to S1 in a text node that has list level L2, the new text node list level must be L1 Change-Id: Ic25b222202cb2da3153fc5c3723998c9f7f01247 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153161 Reviewed-by: Ashod Nakashian Tested-by: Jenkins (cherry picked from commit c1cfe85f8bba10d367ef9ef1d6d569f53969dd34) (cherry picked from commit d466d3b4422e6fc6405cf17bbeee48ae52fa1d3e) --- .../extras/uiwriter/data/tdf62032_apply_style.odt | Bin 0 -> 10951 bytes sw/qa/extras/uiwriter/uiwriter4.cxx | 22 +++++++++++++++++++++ sw/source/core/doc/docfmt.cxx | 5 +++++ 3 files changed, 27 insertions(+) create mode 100644 sw/qa/extras/uiwriter/data/tdf62032_apply_style.odt diff --git a/sw/qa/extras/uiwriter/data/tdf62032_apply_style.odt b/sw/qa/extras/uiwriter/data/tdf62032_apply_style.odt new file mode 100644 index 0000000000000000000000000000000000000000..86cda167ee8acd58744fda82a63037fc2034e847 GIT binary patch literal 10951 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, "FillTransparence")); } +void SwUiWriterTest4::testTdf62032ApplyStyle() +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "tdf62032_apply_style.odt"); + SwWrtShell* pWrtSh = pDoc->GetDocShell()->GetWrtShell(); + + pWrtSh->Down(/*bSelect=*/false); + + uno::Sequence aPropertyValues = comphelper::InitPropertySequence({ + { "Style", uno::Any(OUString("A 2")) }, + { "FamilyName", uno::Any(OUString("ParagraphStyles")) }, + }); + dispatchCommand(mxComponent, ".uno:StyleApply", aPropertyValues); + + // Without the fix in place, it fails with: + // - Expected: 1.1 + // - Actual : 2 + CPPUNIT_ASSERT_EQUAL(OUString("1.1"), + getProperty(getParagraph(2), "ListLabelString").trim()); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest4); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index 42dfd707c556..1dd846cb80e4 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -1067,6 +1067,11 @@ static bool lcl_SetTextFormatColl( SwNode* pNode, void* pArgs ) pCNd->ResetAttr( RES_PARATR_LIST_ISCOUNTED ); pCNd->ResetAttr( RES_PARATR_LIST_ID ); } + else + { + // forcing reset of list level from parapgaph + pCNd->SetAttr(pFormat->GetFormatAttr(RES_PARATR_LIST_LEVEL)); + } } } -- 2.11.4.GIT