writerfilter/source/dmapper/DomainMapper_Impl.cxx | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+)
New commits: commit dc0300eac3b755bc207cd1fe87217f4ebaeb9f58 Author: László Németh <nem...@numbertext.org> AuthorDate: Tue Jul 17 19:46:22 2018 +0200 Commit: László Németh <nem...@numbertext.org> CommitDate: Wed Jul 18 08:55:01 2018 +0200 tdf#118521 DOCX import: fix paragraph margin from paragraph style when the other (top or bottom) margin was set by direct formatting. Change-Id: Ic4038397329374fb2d6cf974751310f7dd8e8b31 Reviewed-on: https://gerrit.libreoffice.org/57585 Tested-by: Jenkins Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 00effcd10081..e89417e99468 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1415,6 +1415,31 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap ) uno::makeAny( ConversionHelper::convertTwipToMM100(nSize))); } } + + // tdf#118521 set paragraph top or bottom margin based on the paragraph style + // if we already set the other margin with direct formatting + if (pParaContext && m_xPreviousParagraph.is() && + pParaContext->isSet(PROP_PARA_TOP_MARGIN) != pParaContext->isSet(PROP_PARA_BOTTOM_MARGIN)) + { + const StyleSheetEntryPtr pEntry = GetStyleSheetTable()->FindStyleSheetByConvertedStyleName( GetCurrentParaStyleName() ); + OSL_ENSURE( pEntry.get(), "no style sheet found" ); + const StyleSheetPropertyMap* pStyleSheetProperties = + dynamic_cast<const StyleSheetPropertyMap*>(pEntry ? pEntry->pProperties.get() : nullptr); + if (pStyleSheetProperties) { + boost::optional<PropertyMap::Property> oProperty; + if (pParaContext->isSet(PROP_PARA_TOP_MARGIN)) + { + if ( (oProperty = pStyleSheetProperties->getProperty(PROP_PARA_BOTTOM_MARGIN)) ) + m_xPreviousParagraph->setPropertyValue("ParaBottomMargin", oProperty->second); + } + else + { + if ( (oProperty = pStyleSheetProperties->getProperty(PROP_PARA_TOP_MARGIN)) ) + m_xPreviousParagraph->setPropertyValue("ParaTopMargin", oProperty->second); + } + } + } + } if( !bKeepLastParagraphProperties ) rAppendContext.pLastParagraphProperties = pToBeSavedProperties; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits