summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-02-17 10:00:32 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-02-18 12:55:48 +0000
commit15c05b945b238ae05cda92564b9465f04db5c919 (patch)
tree39ac4fdeff61ff638207e8a9efca0f7f20e7219a /writerfilter
parent28fa9a59940471bf072175a7ee98e23546485e50 (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.cxx12
-rw-r--r--writerfilter/source/dmapper/SettingsTable.cxx11
-rw-r--r--writerfilter/source/dmapper/SettingsTable.hxx3
-rw-r--r--writerfilter/source/ooxml/model.xml2
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>