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

Miklos Vajna vmiklos at collabora.co.uk
Tue Sep 19 14:19:25 UTC 2017


 sw/qa/extras/ooxmlexport/data/tdf106953.docx     |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx         |    7 +++++++
 writerfilter/source/dmapper/NumberingManager.cxx |    3 +++
 3 files changed, 10 insertions(+)

New commits:
commit c72a1a74b5b1064fc9cdf9994b11fce26d866e26
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Sep 19 09:17:25 2017 +0200

    Related: tdf#112211 DOCX import: fix handling of missing first ind in <w:lvl>
    
    Usually a DOCX numbering definition has multiple levels, each level
    containing a <w:ind ... w:hanging="..."/> 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 <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf106953.docx b/sw/qa/extras/ooxmlexport/data/tdf106953.docx
new file mode 100644
index 000000000000..31dc0e28e42f
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf106953.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 57b41c224b84..3dd23fbf5eaf 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -845,6 +845,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf44986, "tdf44986.docx")
     CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength());
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf106953, "tdf106953.docx")
+{
+    uno::Reference<container::XIndexAccess> xRules = getProperty< uno::Reference<container::XIndexAccess> >(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<sal_Int32>(0), comphelper::SequenceAsHashMap(xRules->getByIndex(0))["FirstLineIndent"].get<sal_Int32>());
+}
+
 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<PropertyMap::Property> 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<sal_Int32>(0)), beans::PropertyState_DIRECT_VALUE);
     }
 
     boost::optional<PropertyMap::Property> aPropFont = getProperty(PROP_CHAR_FONT_NAME);


More information about the Libreoffice-commits mailing list