diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-02-17 10:00:32 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-02-18 12:55:48 +0000 |
commit | 15c05b945b238ae05cda92564b9465f04db5c919 (patch) | |
tree | 39ac4fdeff61ff638207e8a9efca0f7f20e7219a /writerfilter | |
parent | 28fa9a59940471bf072175a7ee98e23546485e50 (diff) |
fdo#74357 DOCX import: avoid layout problem with automatic spacing
Commit 279ff2e03371542d014bf281e73282ba8080cf6b (bnc#816593 DOCX import:
fix auto para spacing without compat option, 2013-08-28) corrected the
value of "auto" paragraph spacing, but unfortunately this triggers a
layout problem:
warn:legacy.osl:12692:1:sw/source/core/layout/tabfrm.cxx:2513: debug assertion: <SwTabFrm::MakeAll()> - format of table lowers suppressed by fix i44910
resulting in "the rest of the table is not rendered by the layout".
Given that we backported the original fix to stable branches as well,
just stay on the safe side and revert back to the original behavior in
case the document requests the web layout.
(cherry picked from commit 8b6ff51bb89db0d7050bb4d00c0ec797b4754f25)
Conflicts:
writerfilter/source/dmapper/SettingsTable.cxx
Change-Id: I72683530b5218beff084bec8218cc99946b44802
Reviewed-on: https://gerrit.libreoffice.org/8081
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 12 | ||||
-rw-r--r-- | writerfilter/source/dmapper/SettingsTable.cxx | 11 | ||||
-rw-r--r-- | writerfilter/source/dmapper/SettingsTable.hxx | 3 | ||||
-rw-r--r-- | writerfilter/source/ooxml/model.xml | 2 |
4 files changed, 25 insertions, 3 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 06ea11cf4834..6ed6ddf4b5ef 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1192,7 +1192,12 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) sal_Int32 default_spacing = 100; if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing()) { - default_spacing = 280; + // 49 is just the old value that should be removed, once the + // root cause in SwTabFrm::MakeAll() is fixed. + if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_wordprocessingml_ST_View_web) + default_spacing = 49; + 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 @@ -1207,7 +1212,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing()) { - default_spacing = 280; + if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_wordprocessingml_ST_View_web) + default_spacing = 49; + 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 diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx index b01047ac0a9a..b4c54a276842 100644 --- a/writerfilter/source/dmapper/SettingsTable.cxx +++ b/writerfilter/source/dmapper/SettingsTable.cxx @@ -67,6 +67,7 @@ struct SettingsTable_Impl OUString m_sSalt; bool m_bLinkStyles; sal_Int16 m_nZoomFactor; + Id m_nView; bool m_bEvenAndOddHeaders; bool m_bUsePrinterMetrics; bool embedTrueTypeFonts; @@ -91,6 +92,7 @@ struct SettingsTable_Impl , m_nCryptSpinCount(0) , m_bLinkStyles(false) , m_nZoomFactor(0) + , m_nView(0) , m_bEvenAndOddHeaders(false) , m_bUsePrinterMetrics(false) , embedTrueTypeFonts(false) @@ -123,6 +125,9 @@ void SettingsTable::lcl_attribute(Id nName, Value & val) case NS_ooxml::LN_CT_Zoom_percent: m_pImpl->m_nZoomFactor = nIntValue; break; + case NS_ooxml::LN_CT_View_val: + m_pImpl->m_nView = nIntValue; + break; default: { #ifdef DEBUG_DMAPPER_SETTINGS_TABLE @@ -152,6 +157,7 @@ void SettingsTable::lcl_sprm(Sprm& rSprm) case NS_ooxml::LN_CT_Settings_compat: // 92547; case NS_ooxml::LN_CT_Settings_themeFontLang: // 92552; case NS_ooxml::LN_CT_Settings_shapeDefaults: // 92560; + case NS_ooxml::LN_CT_Settings_view: //PropertySetValues - need to be resolved { @@ -251,6 +257,11 @@ sal_Int16 SettingsTable::GetZoomFactor() const return m_pImpl->m_nZoomFactor; } +Id SettingsTable::GetView() const +{ + return m_pImpl->m_nView; +} + bool SettingsTable::GetUsePrinterMetrics() const { return m_pImpl->m_bUsePrinterMetrics; diff --git a/writerfilter/source/dmapper/SettingsTable.hxx b/writerfilter/source/dmapper/SettingsTable.hxx index 14b7552135f3..c853616f4bbb 100644 --- a/writerfilter/source/dmapper/SettingsTable.hxx +++ b/writerfilter/source/dmapper/SettingsTable.hxx @@ -61,6 +61,9 @@ class WRITERFILTER_DLLPRIVATE SettingsTable : public LoggedProperties, public Lo /// What's the zoom factor set in percents? sal_Int16 GetZoomFactor() const; + /// What's the requested view? E.g. "web". + Id GetView() const; + bool GetEvenAndOddHeaders() const; bool GetUsePrinterMetrics() const; diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index 1cf434ccccd9..a049fdea3ece 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -14132,7 +14132,7 @@ </define> <define name="CT_View"> <attribute name="val"> - <text/> + <ref name="ST_View"/> <xs:documentation>Document View Setting Value</xs:documentation> </attribute> </define> |