diff options
author | Rohit Deshmukh <rohit.deshmukh@synerzip.com> | 2014-04-04 17:47:21 +0530 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-04-11 07:52:57 +0000 |
commit | 05c5da4c376d676ff89cd40dd0dea9eeb4bc1e75 (patch) | |
tree | 21638a7e78ef13f8515cb08343ee899bfb2344d2 | |
parent | a3be37674609adf68e533f31f120bbdc1abe5f7a (diff) |
fdo#76597: Fix preservation issue of Spacing between paragraph
Change-Id: I458bed111893a8d2fef79b11e28263a5bd2ed9cf
Reviewed-on: https://gerrit.libreoffice.org/8842
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo76597.docx | bin | 0 -> 83390 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 9 | ||||
-rw-r--r-- | sw/source/filter/ww8/docxattributeoutput.cxx | 14 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 14 |
4 files changed, 35 insertions, 2 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/fdo76597.docx b/sw/qa/extras/ooxmlexport/data/fdo76597.docx Binary files differnew file mode 100644 index 000000000000..a970136b8fc7 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/fdo76597.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 2d184538cfbf..272207560248 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -3068,6 +3068,15 @@ DECLARE_OOXMLEXPORT_TEST(test76734_2K7, "test76734_2K7.docx") assertXPath(pXmlDoc, "/w:document[1]/w:body[1]/w:p[1]/w:r[3]/mc:AlternateContent[1]/mc:Choice[1]", "Requires", "wps"); } +DECLARE_OOXMLEXPORT_TEST(testFDO76597, "fdo76597.docx") +{ + // check XML + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; + assertXPath(pXmlDoc, "/w:document/w:body/w:p[4]/w:pPr/w:spacing", "before", "96"); + assertXPath(pXmlDoc, "/w:document/w:body/w:p[4]/w:pPr/w:spacing", "after", "120"); +} #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 04f5d3780fb0..d2e932eedfa3 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -6335,6 +6335,13 @@ void DocxAttributeOutput::FormatULSpace( const SvxULSpaceItem& rULSpace ) AddToAttrList( m_pParagraphSpacingAttrList, FSNS( XML_w, XML_beforeAutospacing ), "1" ); } + else if (m_bParaBeforeAutoSpacing && m_nParaBeforeSpacing == -1) + { + AddToAttrList( m_pParagraphSpacingAttrList, + FSNS( XML_w, XML_beforeAutospacing ), "0" ); + AddToAttrList( m_pParagraphSpacingAttrList, + FSNS( XML_w, XML_before ), OString::number( rULSpace.GetUpper() ).getStr() ); + } else { AddToAttrList( m_pParagraphSpacingAttrList, @@ -6348,6 +6355,13 @@ void DocxAttributeOutput::FormatULSpace( const SvxULSpaceItem& rULSpace ) AddToAttrList( m_pParagraphSpacingAttrList, FSNS( XML_w, XML_afterAutospacing ), "1" ); } + else if (m_bParaAfterAutoSpacing && m_nParaAfterSpacing == -1) + { + AddToAttrList( m_pParagraphSpacingAttrList, + FSNS( XML_w, XML_afterAutospacing ), "0" ); + AddToAttrList( m_pParagraphSpacingAttrList, + FSNS( XML_w, XML_after ), OString::number( rULSpace.GetLower()).getStr() ); + } else { AddToAttrList( m_pParagraphSpacingAttrList, diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index f48e654d4e4a..b9df3b34a840 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -559,9 +559,14 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) else default_spacing = 280; } - m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) ); if (nIntValue) // If auto spacing is set, then only store set value in InteropGrabBag { + m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) ); + m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG ); + } + else + { + default_spacing = -1; m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG ); } } @@ -577,9 +582,14 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) else default_spacing = 280; } - m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) ); if (nIntValue) // If auto spacing is set, then only store set value in InteropGrabBag { + m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) ); + m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG ); + } + else + { + default_spacing = -1; m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG ); } } |