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

Justin Luth (via logerrit) logerrit at kemper.freedesktop.org
Fri Jul 9 05:24:49 UTC 2021


 sw/qa/extras/ooxmlexport/ooxmlexport16.cxx        |   12 ++++++++++++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |    7 ++++---
 2 files changed, 16 insertions(+), 3 deletions(-)

New commits:
commit a45876adc36a3764cfeadb1737e5dcfb7ffee9da
Author:     Justin Luth <justin_luth at sil.org>
AuthorDate: Fri Apr 30 13:25:54 2021 +0200
Commit:     Justin Luth <justin_luth at sil.org>
CommitDate: Fri Jul 9 07:24:16 2021 +0200

    tdf#141964 writerfilter CN: listLevel 9 means no numbering
    
    and so does numId 0.
    
    Wow - this is REALLY FUNDAMENTAL stuff, and we weren't
    handling it? Did anyone look at any of the specs
    when they were implementing import of numbering?
    
    Change-Id: I3ea20baccfae34751328558a873ccdcfda0de0a2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115258
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <justin_luth at sil.org>

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
index 7ef26bb13b4c..c65e59e2ff78 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
@@ -168,6 +168,18 @@ DECLARE_OOXMLEXPORT_TEST(testTdf141966_chapterNumberTortureTest, "tdf141966_chap
     // 2nd.iii in MS Word 2003.  2nd.ii in MS Word 2010/2016 where para5 is not numbered. Why not?
     CPPUNIT_ASSERT_EQUAL(OUString("2nd.iii"), getProperty<OUString>(xPara, "ListLabelString"));
     CPPUNIT_ASSERT_EQUAL(sal_Int16(1), getProperty<sal_Int16>(xPara, "NumberingLevel")); // Level 2
+
+    xPara.set(getParagraph(9, "outline with Body listLvl(9)."), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xPara, "ListLabelString"));
+
+    xPara.set(getParagraph(10, "outline with Body listLvl(9) #2."), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xPara, "ListLabelString"));
+
+    xPara.set(getParagraph(11, "direct formatting - Body listLvl(9)."), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xPara, "ListLabelString"));
+
+    xPara.set(getParagraph(13, "Style numId0 cancels inherited numbering."), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xPara, "ListLabelString"));
 }
 
 DECLARE_OOXMLEXPORT_TEST(testTdf132752, "tdf132752.docx")
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 74550ec80245..01ea5230ecfa 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1548,14 +1548,15 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
         if (nListLevel == -1 && nListId > 0)
             nListLevel = 0;
 
-        if ( !bNoNumbering && !isNumberingViaRule && nListLevel >= 0 )
+        if (!bNoNumbering && !isNumberingViaRule && nListLevel >= 0 && nListLevel < 9)
             pParaContext->Insert( PROP_NUMBERING_LEVEL, uno::makeAny(nListLevel), false );
 
         auto const pList(GetListTable()->GetList(nListId));
         if (pList && nListId >= 0 && !pParaContext->isSet(PROP_NUMBERING_STYLE_NAME))
         {
-            if ( bNoNumbering )
-                pParaContext->Insert( PROP_NUMBERING_STYLE_NAME, uno::makeAny(OUString()) );
+            // ListLevel 9 means Body Level/no numbering.  numId 0 means no numbering.
+            if (bNoNumbering || nListLevel == 9 || (!isNumberingViaRule && !nListId))
+                pParaContext->Insert(PROP_NUMBERING_STYLE_NAME, uno::makeAny(OUString()), true);
             else if ( !isNumberingViaRule )
             {
                 isNumberingViaStyle = true;


More information about the Libreoffice-commits mailing list