sw/qa/extras/ooxmlexport/data/tdf132752.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport16.cxx | 8 ++++++++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 11 ++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-)
New commits: commit a4e7df83fcac6c68f110f89f41d5eb623038410e Author: Vasily Melenchuk <vasily.melenc...@cib.de> AuthorDate: Wed May 19 13:58:35 2021 +0300 Commit: Thorsten Behrens <thorsten.behr...@allotropia.de> CommitDate: Tue May 25 11:42:14 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. Change-Id: I344c907bb7a7b83a91f5727e13ad184fb44137b5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115795 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de> 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 c7936e1ec58e..16cd111e9e54 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx @@ -96,6 +96,14 @@ DECLARE_OOXMLEXPORT_TEST(testTdf141231_arabicHebrewNumbering, "tdf141231_arabicH CPPUNIT_ASSERT_EQUAL(style::NumberingType::CHARS_ARABIC_ABJAD, nActual); } + +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(testGutterLeft, "gutter-left.docx") { uno::Reference<beans::XPropertySet> xPageStyle; diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 863526d814fd..fb1408042a16 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1551,6 +1551,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 @@ -2041,7 +2050,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 ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits