sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odt |binary
 sw/qa/extras/ww8export/ww8export3.cxx                      |    6 ++++++
 sw/source/filter/ww8/wrtw8num.cxx                          |   11 +++++++++++
 sw/source/filter/ww8/wrtww8.hxx                            |    1 +
 sw/source/filter/ww8/ww8atr.cxx                            |    7 +++++++
 5 files changed, 25 insertions(+)

New commits:
commit 2691f74e454870c549ec395f9d19cb88538d1c50
Author:     Justin Luth <justin_l...@sil.org>
AuthorDate: Fri May 28 16:03:52 2021 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jun 1 08:19:58 2021 +0200

    tdf#138302 partial revert tdf#108496: DOCX: redesign of override in lists
    
    LO 6.4.5 commit cf13fe3e6f6a40f6db064d65d4514d13a23a31f0
    was only concerned about DOCX, but just elinated shared code.
    So restore the shared code and just don't execute it for DOCX.
    
    It doesn't look like RTF was working before this,
    but this does fix DOC format.
    I looked for existing unit tests in rtf and doc,
    but none were found that hit this code.
    
    Change-Id: Id624f73181384f38e1ef9f27575e0fb82eea19c7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116349
    Tested-by: Jenkins
    Reviewed-by: Vasily Melenchuk <vasily.melenc...@cib.de>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116452
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odt 
b/sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odt
new file mode 100644
index 000000000000..8c99963616a7
Binary files /dev/null and 
b/sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odt differ
diff --git a/sw/qa/extras/ww8export/ww8export3.cxx 
b/sw/qa/extras/ww8export/ww8export3.cxx
index df108531118d..837de2500422 100644
--- a/sw/qa/extras/ww8export/ww8export3.cxx
+++ b/sw/qa/extras/ww8export/ww8export3.cxx
@@ -157,6 +157,12 @@ CPPUNIT_TEST_FIXTURE(SwModelTestBase, 
testChicagoNumberingFootnote)
     CPPUNIT_ASSERT_EQUAL(nExpected, nActual);
 }
 
+DECLARE_WW8EXPORT_TEST(tesTdf138302_restartNumbering, 
"tdf138302_restartNumbering.odt")
+{
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(8), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString("1."), getProperty<OUString>(xPara, 
"ListLabelString"));
+}
+
 DECLARE_WW8EXPORT_TEST(testTdf122429_header, "tdf122429_header.doc")
 {
     uno::Reference<container::XNameAccess> pageStyles = 
getStyles("PageStyles");
diff --git a/sw/source/filter/ww8/wrtw8num.cxx 
b/sw/source/filter/ww8/wrtw8num.cxx
index e8f26c3292b3..7454acd83dee 100644
--- a/sw/source/filter/ww8/wrtw8num.cxx
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -61,6 +61,17 @@ SwNumRule* MSWordExportBase::DuplicateNumRuleImpl(const 
SwNumRule *pRule)
     return pMyNumRule;
 }
 
+sal_uInt16 MSWordExportBase::DuplicateNumRule(const SwNumRule* pRule, 
sal_uInt8 nLevel, sal_uInt16 nVal)
+{
+    SwNumRule* const pMyNumRule = DuplicateNumRuleImpl(pRule);
+
+    SwNumFormat aNumFormat(pMyNumRule->Get(nLevel));
+    aNumFormat.SetStart(nVal);
+    pMyNumRule->Set(nLevel, aNumFormat);
+
+    return GetNumberingId(*pMyNumRule);
+}
+
 // multiple SwList can be based on the same SwNumRule; ensure one w:abstractNum
 // per SwList
 sal_uInt16 MSWordExportBase::DuplicateAbsNum(OUString const& rListId,
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index 851e50a4b55b..8a9ae600ac77 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -657,6 +657,7 @@ public:
     /// List is set to restart at a particular value so for export make a
     /// completely new list based on this one and export that instead,
     /// which duplicates words behaviour in this respect.
+    sal_uInt16 DuplicateNumRule(const SwNumRule* pRule, sal_uInt8 nLevel, 
sal_uInt16 nVal);
     SwNumRule * DuplicateNumRuleImpl(const SwNumRule *pRule);
 
     /// check if a new abstractNum is needed for this list
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index eb5d42253024..3af874cb41fa 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -3671,6 +3671,13 @@ void AttributeOutputBase::ParaNumRule( const 
SwNumRuleItem& rNumRule )
                     }
                 }
             }
+            else if (pTextNd->IsListRestart())
+            {
+                sal_uInt16 nStartWith = 
static_cast<sal_uInt16>(pTextNd->GetActualListStartValue());
+                nNumId = GetExport().DuplicateNumRule(pRule, nLvl, nStartWith);
+                if (USHRT_MAX != nNumId)
+                    ++nNumId;
+            }
         }
         else
         {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to