summaryrefslogtreecommitdiff
path: root/writerfilter/source
diff options
context:
space:
mode:
authorNikhil Walvekar <nikhil.walvekar@synerzip.com>2013-11-01 23:25:41 +0530
committerMiklos Vajna <vmiklos@collabora.co.uk>2013-11-15 17:01:35 +0100
commit68e538ea6d6b2308de7c9390116fa06cd8c02d18 (patch)
treec7a6c36f815d4e5c06617dd8105ae7ee7a5bb12d /writerfilter/source
parentb2a94ccdf91c9ea41fbde13ebfb5031ae76bc102 (diff)
Resolved: Preservation of para before and after auto spacing.
During import a flag and fixed value is stored in InteropGrabBag and during export we check for fixed value and value available in para spacing object. Write autospacing only if para spacing values are not modified during edit. Reviewed on: https://gerrit.libreoffice.org/6575 Change-Id: If34c5b61c3180b01e68dfe83862784c3d6f33981
Diffstat (limited to 'writerfilter/source')
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx33
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx2
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx2
-rw-r--r--writerfilter/source/dmapper/PropertyMap.hxx1
4 files changed, 28 insertions, 10 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 8a3f58976f5c..ae81ad54ef70 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -176,7 +176,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
OUString sStringValue = val.getString();
SectionPropertyMap * pSectionContext = m_pImpl->GetSectionContext();
-
+ PropertyMap::iterator oldPropValue;
if( nName >= NS_rtf::LN_WIDENT && nName <= NS_rtf::LN_LCBSTTBFUSSR )
m_pImpl->GetFIB().SetData( nName, nIntValue );
else
@@ -1188,18 +1188,33 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
break;
// See SwWW8ImplReader::GetParagraphAutoSpace() on why these are 100 and 280
case NS_ooxml::LN_CT_Spacing_beforeAutospacing:
- m_pImpl->appendGrabBag(m_pImpl->m_aSubInteropGrabBag, "beforeAutospacing", OUString::number(nIntValue));
+ {
+ sal_Int32 default_spacing = 100;
if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
- m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(280) ) );
- else
- m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(100) ) );
+ {
+ 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_BEFORE_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true,true );
+ }
+ }
break;
case NS_ooxml::LN_CT_Spacing_afterAutospacing:
- m_pImpl->appendGrabBag(m_pImpl->m_aSubInteropGrabBag, "afterAutospacing", OUString::number(nIntValue));
+ {
+ sal_Int32 default_spacing = 100;
+
if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
- m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(280) ) );
- else
- m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(100) ) );
+ {
+ 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_AFTER_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true,true );
+ }
+ }
break;
case NS_ooxml::LN_CT_SmartTagRun_uri:
case NS_ooxml::LN_CT_SmartTagRun_element:
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index 9cdd249472ec..b2848552308a 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -125,6 +125,8 @@ const OUString& PropertyNameSupplier::GetName( PropertyIds eId ) const
case PROP_PARA_FIRST_LINE_INDENT: sName = "ParaFirstLineIndent"; break;
case PROP_PARA_KEEP_TOGETHER: sName = "ParaKeepTogether"; break;
case PROP_PARA_TOP_MARGIN: sName = "ParaTopMargin"; break;
+ case PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING: sName = "ParaTopMarginBeforeAutoSpacing"; break;
+ case PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING: sName = "ParaBottomMarginAfterAutoSpacing"; break;
case PROP_PARA_CONTEXT_MARGIN: sName = "ParaContextMargin"; break;
case PROP_PARA_BOTTOM_MARGIN: sName = "ParaBottomMargin"; break;
case PROP_PARA_IS_HYPHENATION: sName = "ParaIsHyphenation"; break;
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index d6c25ffad73b..ee5045db6b3a 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -313,6 +313,8 @@ enum PropertyIds
,PROP_SURROUND_TEXT_WRAP_SMALL
,PROP_PARA_SHADOW_FORMAT
,PROP_FOOTNOTE_LINE_RELATIVE_WIDTH
+ ,PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING
+ ,PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING
};
struct PropertyNameSupplier_Impl;
class PropertyNameSupplier
diff --git a/writerfilter/source/dmapper/PropertyMap.hxx b/writerfilter/source/dmapper/PropertyMap.hxx
index 5086dfaa9e23..456a48098a10 100644
--- a/writerfilter/source/dmapper/PropertyMap.hxx
+++ b/writerfilter/source/dmapper/PropertyMap.hxx
@@ -111,7 +111,6 @@ public:
void Insert( PropertyIds eId, const ::com::sun::star::uno::Any& rAny, bool bOverwrite = true, bool bGrabBag = false );
void Insert( PropertyIds eId, const PropValue& rValue, bool bOverwrite = true );
void InsertProps(const boost::shared_ptr<PropertyMap> pMap);
-
const ::com::sun::star::uno::Reference< ::com::sun::star::text::XFootnote>& GetFootnote() const;
void SetFootnote( ::com::sun::star::uno::Reference< ::com::sun::star::text::XFootnote> xF ) { m_xFootnote = xF; }