sw/qa/extras/ww8export/data/tdf104239_chapterNumberingLevels.doc |binary sw/qa/extras/ww8export/data/tdf104239_numbering.doc |binary sw/qa/extras/ww8export/ww8export3.cxx | 21 ++++++++ sw/source/filter/ww8/ww8par.cxx | 26 ++++------ 4 files changed, 33 insertions(+), 14 deletions(-)
New commits: commit 17bc5794d6acd38304653dc78b95f9f772893ca7 Author: Justin Luth <justin_l...@sil.org> AuthorDate: Sat Jul 3 08:23:48 2021 +0200 Commit: Justin Luth <justin_l...@sil.org> CommitDate: Mon Jul 5 06:05:29 2021 +0200 tdf#104239 doc import CN: don't skip no-style levels The Chapter Numbering "Outline" style must copy the entire range of levels, not just those that have a paragraph style associated with them. Change-Id: I25578129e9cdbd8eb3dab710a2b26dd2764752e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118343 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_l...@sil.org> diff --git a/sw/qa/extras/ww8export/data/tdf104239_chapterNumberingLevels.doc b/sw/qa/extras/ww8export/data/tdf104239_chapterNumberingLevels.doc new file mode 100644 index 000000000000..8a7583c3253c Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf104239_chapterNumberingLevels.doc differ diff --git a/sw/qa/extras/ww8export/data/tdf104239_numbering.doc b/sw/qa/extras/ww8export/data/tdf104239_numbering.doc new file mode 100644 index 000000000000..ee8ad09e4b14 Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf104239_numbering.doc differ diff --git a/sw/qa/extras/ww8export/ww8export3.cxx b/sw/qa/extras/ww8export/ww8export3.cxx index 58e226506ccf..797b7f103dd6 100644 --- a/sw/qa/extras/ww8export/ww8export3.cxx +++ b/sw/qa/extras/ww8export/ww8export3.cxx @@ -851,6 +851,27 @@ DECLARE_WW8EXPORT_TEST(testTdf75748_inheritChapterNumberingC, "tdf75748_inheritC CPPUNIT_ASSERT_EQUAL(OUString("II.B.1."), getProperty<OUString>(xPara, "ListLabelString")); } +DECLARE_WW8EXPORT_TEST(testTdf104239_numbering, "tdf104239_numbering.doc") +{ + // The paragraph starts with "paraksta Pieņemšanas". [Roundtrip by Word 2016 avoids the problem.] + uno::Reference<beans::XPropertySet> xPara(getParagraph(51), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("3.3.1."), getProperty<OUString>(xPara, "ListLabelString")); +} + +DECLARE_WW8EXPORT_TEST(testTdf104239_chapterNumberingLevels, "tdf104239_chapterNumberingLevels.doc") +{ + uno::Reference<beans::XPropertySet> xPara(getParagraph(1, "Heading 1"), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("Article I."), getProperty<OUString>(xPara, "ListLabelString")); + xPara.set(getParagraph(2, "Heading 2"), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("1"), getProperty<OUString>(xPara, "ListLabelString")); + xPara.set(getParagraph(3, "Heading 3"), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("First"), getProperty<OUString>(xPara, "ListLabelString")); + xPara.set(getParagraph(4, "Heading 4"), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xPara, "ListLabelString")); + xPara.set(getParagraph(8, "Heading 9"), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("1.1.1.1.1.1.1.1.1."), getProperty<OUString>(xPara, "ListLabelString")); +} + DECLARE_WW8EXPORT_TEST(testTdf104239_chapterNumberTortureTest, "tdf104239_chapterNumberTortureTest.doc") { // There is no point in identifying what the wrong values where in this test, diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 8034adfa68ba..04b65f3e6eac 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -6018,7 +6018,17 @@ void SwWW8ImplReader::SetOutlineStyles() // assigned directly and // its default outline level is applied. SwNumRule aOutlineRule(*m_rDoc.GetOutlineNumRule()); - bool bAppliedChangedOutlineStyle = false; + if (m_pChosenWW8OutlineStyle) + { + for (int i = 0; i < WW8ListManager::nMaxLevel; ++i) + { + // Don't clobber existing outline levels. + const sal_uInt16 nLevel = 1 << i; + if (!(nOutlineStyleListLevelWithAssignment & nLevel)) + aOutlineRule.Set(i, m_pChosenWW8OutlineStyle->Get(i)); + } + } + for (const SwWW8StyInf* pStyleInf : aWW8BuiltInHeadingStyles) { const sal_uInt16 nOutlineStyleListLevelOfWW8BuiltInHeadingStyle @@ -6029,18 +6039,6 @@ void SwWW8ImplReader::SetOutlineStyles() continue; } - const sal_uInt8 nLvl = pStyleInf->m_nListLevel == MAXLEVEL ? 0 : pStyleInf->m_nListLevel; - if (m_pChosenWW8OutlineStyle != nullptr - && pStyleInf->mnWW8OutlineLevel < WW8ListManager::nMaxLevel - && pStyleInf->mnWW8OutlineLevel == nLvl) - { - // LibreOffice's Chapter Numbering only works when outlineLevel == listLevel - const SwNumFormat& rRule - = m_pChosenWW8OutlineStyle->Get(pStyleInf->mnWW8OutlineLevel); - aOutlineRule.Set(pStyleInf->mnWW8OutlineLevel, rRule); - bAppliedChangedOutlineStyle = true; - } - // in case that there are more styles on this level ignore them nOutlineStyleListLevelWithAssignment |= nOutlineStyleListLevelOfWW8BuiltInHeadingStyle; @@ -6075,7 +6073,7 @@ void SwWW8ImplReader::SetOutlineStyles() } } - if (bAppliedChangedOutlineStyle) + if (m_pChosenWW8OutlineStyle) { m_rDoc.SetOutlineNumRule(aOutlineRule); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits