[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - sw/qa writerfilter/source

Vasily Melenchuk (via logerrit) logerrit at kemper.freedesktop.org
Wed May 26 09:07:08 UTC 2021


 sw/qa/extras/ooxmlexport/data/tdf132752.docx      |binary
 sw/qa/extras/ooxmlexport/ooxmlexport16.cxx        |    7 +++++++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   11 ++++++++++-
 3 files changed, 17 insertions(+), 1 deletion(-)

New commits:
commit dacd7c5d3df95e30ae6161e92015fc0449928a37
Author:     Vasily Melenchuk <vasily.melenchuk at cib.de>
AuthorDate: Wed May 19 13:58:35 2021 +0300
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Wed May 26 11:06:29 2021 +0200

    tdf#132752: docx import: improvements for first line indent in lists
    
    As far as I see, Word is using lists with id=0 and no list definitions
    to reset list numbering used in this paragraph. At the same time Word
    is still using some of default list properties. For example in this
    scenario parent style has defined first line indent, but in paragrath
    it is overwritten by "not existing" list=0 without definitions.
    
    To this moment I know about only first line indent behavior, but
    probably some other properties are also affected.
    
    Conflicts:
          sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
    
    Change-Id: I344c907bb7a7b83a91f5727e13ad184fb44137b5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115795
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <thorsten.behrens at allotropia.de>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116093
    Reviewed-by: Vasily Melenchuk <vasily.melenchuk at cib.de>
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf132752.docx b/sw/qa/extras/ooxmlexport/data/tdf132752.docx
new file mode 100644
index 000000000000..57eddc455fca
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf132752.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
index 2a1784d32ac1..bc064942b2d3 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
@@ -44,6 +44,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf138892_noNumbering, "tdf138892_noNumbering.docx"
     CPPUNIT_ASSERT_MESSAGE("Para3: <blank line>", getProperty<OUString>(getParagraph(3), "NumberingStyleName").isEmpty());
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf132752, "tdf132752.docx")
+{
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1801), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1000), getProperty<sal_Int32>(getParagraph(1), "ParaRightMargin"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(1), "ParaFirstLineIndent"));
+}
+
 DECLARE_OOXMLEXPORT_TEST(testTdf140668, "tdf140668.docx")
 {
     // Don't crash when document is opened
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 7cda0e0df1dc..9c0e23c0be70 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1537,6 +1537,15 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
                     pParaContext->Insert(PROP_PARA_LEFT_MARGIN, uno::makeAny(nParaLeftMargin), /*bOverwrite=*/false);
             }
         }
+
+        if (nListId == 0 && !pList)
+        {
+            // Seems situation with listid=0 and missing list definition is used by MS Word
+            // to remove numbering defined previously. But some default numbering attributes
+            // are still applied. This is first line indent, probably something more?
+            if (!pParaContext->isSet(PROP_PARA_FIRST_LINE_INDENT))
+                pParaContext->Insert(PROP_PARA_FIRST_LINE_INDENT, uno::makeAny(sal_Int16(0)), false);
+        }
     }
 
     // apply AutoSpacing: it has priority over all other margin settings
@@ -1996,7 +2005,7 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
                     const bool bLeftSet  = pParaContext->isSet(PROP_PARA_LEFT_MARGIN);
                     const bool bRightSet = pParaContext->isSet(PROP_PARA_RIGHT_MARGIN);
                     const bool bFirstSet = pParaContext->isSet(PROP_PARA_FIRST_LINE_INDENT);
-                    if ( bLeftSet != bRightSet || bRightSet != bFirstSet )
+                    if (bLeftSet != bRightSet || bRightSet != bFirstSet)
                     {
                         if ( !bLeftSet )
                         {


More information about the Libreoffice-commits mailing list