[Libreoffice-commits] core.git: sw/qa sw/source
Justin Luth (via logerrit)
logerrit at kemper.freedesktop.org
Mon May 31 06:59:02 UTC 2021
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 f49e5902a3737c02fabf5bec23243ccb126426c4
Author: Justin Luth <justin_luth at sil.org>
AuthorDate: Fri May 28 16:03:52 2021 +0200
Commit: Vasily Melenchuk <vasily.melenchuk at cib.de>
CommitDate: Mon May 31 08:58:18 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.melenchuk at cib.de>
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 691a562ec434..a0b46cdee465 100644
--- a/sw/qa/extras/ww8export/ww8export3.cxx
+++ b/sw/qa/extras/ww8export/ww8export3.cxx
@@ -245,6 +245,12 @@ DECLARE_WW8EXPORT_TEST(testdf79553_lineNumbers, "tdf79553_lineNumbers.doc")
CPPUNIT_ASSERT_MESSAGE("automatic distance", nValue > 0);
}
+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 85a4fa8cac23..ae39db153a1d 100644
--- a/sw/source/filter/ww8/wrtw8num.cxx
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -56,6 +56,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 c18a221fad00..cad77799abe5 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -655,6 +655,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 90696900a8d3..3361e58c5bbc 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -3692,6 +3692,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
{
More information about the Libreoffice-commits
mailing list