diff options
author | László Németh <nemeth@numbertext.org> | 2020-07-20 14:05:30 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2020-07-22 13:22:25 +0200 |
commit | fc4dc18a218dc5d986569b5e6e8c1172a843da1a (patch) | |
tree | ceb7ab0e7189dab8cc42a9d4d9fc564aa45498a0 | |
parent | 724d5240f69abc675397260fad359080766d0ec5 (diff) |
tdf#134648 DOCX import: fix bottom auto margin of subitem
If style based spacing was set to auto in the previous
list item, style of the actual paragraph must be the same
to guarantee the same auto setting.
Regression from commit 9cca15204af9cc44a8a9528ccf2f36616fb70e69
(tdf#133052: DOCX import: fix top auto margin of subitems).
Change-Id: I39d2bad03a659a407b52550768b010cfa716d363
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99096
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
(cherry picked from commit 1c3eb7e329cd2eaeb83068907ba0c9a5b3ef7852)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99195
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf134648.docx | bin | 0 -> 15198 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 12 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 10 |
3 files changed, 22 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf134648.docx b/sw/qa/extras/ooxmlexport/data/tdf134648.docx Binary files differnew file mode 100644 index 000000000000..36e856ca055a --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf134648.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index 8847b6413a54..7317dc751bb9 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -236,6 +236,18 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf133052, "tdf133052.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr[1]/w:tc/w:p[5]/w:pPr/w:spacing", "before", "0"); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf134648, "tdf134648.docx") +{ + xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); + + // list item with direct top auto spacing + assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:spacing", "after", "240"); + assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:spacing", "beforeAutospacing", "1"); + + // This was spacing w:after=200, but bottom auto spacing of first list subitem is zero + assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:pPr/w:spacing", 0); +} + DECLARE_OOXMLEXPORT_TEST(testTdf129575_directBefore, "tdf129575-directBefore.docx") { uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index b987b58d8f40..3f3ce4585b9f 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1695,6 +1695,16 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con { return rValue.Name == "ParaTopMarginBeforeAutoSpacing"; }); + // if style based spacing was set to auto in the previous paragraph, style of the actual paragraph must be the same + if (bParaAutoBefore && !m_bParaAutoBefore && m_xPreviousParagraph->getPropertySetInfo()->hasPropertyByName("ParaStyleName")) + { + auto itParaStyle = std::find_if(aProperties.begin(), aProperties.end(), [](const beans::PropertyValue& rValue) + { + return rValue.Name == "ParaStyleName"; + }); + bParaAutoBefore = itParaStyle != aProperties.end() && + m_xPreviousParagraph->getPropertyValue("ParaStyleName") == itParaStyle->Value; + } // There was a previous textnode and it had the same numbering. if (bParaAutoBefore) { |