From c72a1a74b5b1064fc9cdf9994b11fce26d866e26 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Tue, 19 Sep 2017 09:17:25 +0200 Subject: [PATCH] Related: tdf#112211 DOCX import: fix handling of missing first ind in Usually a DOCX numbering definition has multiple levels, each level containing a element. When this is missing, we should default to the Word default, not to the Writer one. This makes the DOCX version of tdf#106953 imported correctly, in preparation of dropping the original fix that helped RTF only. [ The DOC version of the bugdoc is still not imported correctly. ] Change-Id: Ib7fc1de55316a73188c023665a585ac7056341f7 Reviewed-on: https://gerrit.libreoffice.org/42447 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- sw/qa/extras/ooxmlexport/data/tdf106953.docx | Bin 0 -> 13833 bytes sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 7 +++++++ .../source/dmapper/NumberingManager.cxx | 3 +++ 3 files changed, 10 insertions(+) create mode 100644 sw/qa/extras/ooxmlexport/data/tdf106953.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf106953.docx b/sw/qa/extras/ooxmlexport/data/tdf106953.docx new file mode 100644 index 0000000000000000000000000000000000000000..31dc0e28e42f6f968ee4c574b1e847633196a3dc GIT binary patch literal 13833 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 >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength()); } +DECLARE_OOXMLEXPORT_TEST(testTdf106953, "tdf106953.docx") +{ + uno::Reference xRules = getProperty< uno::Reference >(getStyles("NumberingStyles")->getByName("WWNum1"), "NumberingRules"); + // This was -635, so the tab of the numbering expanded to a small value instead of matching Word's larger value. + CPPUNIT_ASSERT_EQUAL(static_cast(0), comphelper::SequenceAsHashMap(xRules->getByIndex(0))["FirstLineIndent"].get()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx index 5da02b0004d4..2fe06c4d9508 100644 --- a/writerfilter/source/dmapper/NumberingManager.cxx +++ b/writerfilter/source/dmapper/NumberingManager.cxx @@ -304,6 +304,9 @@ uno::Sequence< beans::PropertyValue > ListLevel::GetLevelProperties( ) boost::optional aProp = getProperty(rReadId); if (aProp) aNumberingProperties.emplace_back( getPropertyName(aProp->first), 0, aProp->second, beans::PropertyState_DIRECT_VALUE ); + else if (rReadId == PROP_FIRST_LINE_INDENT) + // Writer default is -360 twips, Word default seems to be 0. + aNumberingProperties.emplace_back("FirstLineIndent", 0, uno::makeAny(static_cast(0)), beans::PropertyState_DIRECT_VALUE); } boost::optional aPropFont = getProperty(PROP_CHAR_FONT_NAME);