summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2021-02-05 10:03:04 +0100
committerMiklos Vajna <vmiklos@collabora.com>2021-02-05 11:15:16 +0100
commit506bacb79ab96656de9168d0db3e3159c6bde3b0 (patch)
treee76509d4414382b910c6be0e164a837251e19b0e
parentfb020d4ed9df7dc5b69aed2dd0e4d4462a81bc7a (diff)
tdf#91920 sw page gutter margin, from top: add DOCX filter
ODF filter was already working as-is. Change-Id: I71089a5d0171eba0cd4c2d14bdee6ca9b64193b3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110455 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
-rw-r--r--sw/qa/extras/ooxmlexport/data/gutter-top.docxbin0 -> 13032 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport16.cxx14
-rw-r--r--sw/source/filter/ww8/docxexport.cxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx4
-rw-r--r--writerfilter/source/dmapper/SettingsTable.cxx6
-rw-r--r--writerfilter/source/dmapper/SettingsTable.hxx1
6 files changed, 30 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/gutter-top.docx b/sw/qa/extras/ooxmlexport/data/gutter-top.docx
new file mode 100644
index 000000000000..d48cb2846287
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/gutter-top.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
index 37610a23f43f..c3b49f5d0dec 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
@@ -58,6 +58,20 @@ DECLARE_OOXMLEXPORT_TEST(testGutterLeft, "gutter-left.docx")
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), nGutterMargin);
}
+CPPUNIT_TEST_FIXTURE(Test, testGutterTop)
+{
+ load(mpTestDocumentPath, "gutter-top.docx");
+ save("Office Open XML Text", maTempFile);
+ mbExported = true;
+ xmlDocUniquePtr pXmlSettings = parseExport("word/settings.xml");
+ CPPUNIT_ASSERT(pXmlSettings);
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 1
+ // - Actual : 0
+ // i.e. <w:gutterAtTop> was lost.
+ assertXPath(pXmlSettings, "/w:settings/w:gutterAtTop", 1);
+}
+
DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf134619_numberingProps, "tdf134619_numberingProps.doc")
{
// Get the third paragraph's numbering style's 1st level's bullet size
diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx
index 7115e4e2d664..04db5fceda4c 100644
--- a/sw/source/filter/ww8/docxexport.cxx
+++ b/sw/source/filter/ww8/docxexport.cxx
@@ -1039,6 +1039,11 @@ void DocxExport::WriteSettings()
if(isMirroredMargin())
pFS->singleElementNS(XML_w, XML_mirrorMargins);
+ if (m_rDoc.getIDocumentSettingAccess().get(DocumentSettingId::GUTTER_AT_TOP))
+ {
+ pFS->singleElementNS(XML_w, XML_gutterAtTop);
+ }
+
// Embed Fonts
if( m_rDoc.getIDocumentSettingAccess().get( DocumentSettingId::EMBED_FONTS ))
pFS->singleElementNS(XML_w, XML_embedTrueTypeFonts);
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index c2b60fc48f5c..05e82a975173 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -7191,6 +7191,10 @@ void DomainMapper_Impl::ApplySettingsTable()
xSettings->setPropertyValue("ProtectForm", uno::makeAny( true ));
if( m_pSettingsTable->GetReadOnly() )
xSettings->setPropertyValue("LoadReadonly", uno::makeAny( true ));
+ if (m_pSettingsTable->GetGutterAtTop())
+ {
+ xSettings->setPropertyValue("GutterAtTop", uno::makeAny(true));
+ }
}
catch(const uno::Exception&)
{
diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx
index 24f0e26e0545..02e0a6f8c4a1 100644
--- a/writerfilter/source/dmapper/SettingsTable.cxx
+++ b/writerfilter/source/dmapper/SettingsTable.cxx
@@ -275,6 +275,7 @@ struct SettingsTable_Impl
OUString m_sCurrentDatabaseDataSource;
DocumentProtection_Impl m_DocumentProtection;
+ bool m_bGutterAtTop = false;
SettingsTable_Impl() :
m_nDefaultTabStop( 720 ) //default is 1/2 in
@@ -586,6 +587,9 @@ void SettingsTable::lcl_sprm(Sprm& rSprm)
case NS_ooxml::LN_CT_Compat_noLeading:
m_pImpl->m_bNoLeading = nIntValue != 0;
break;
+ case NS_ooxml::LN_CT_Settings_gutterAtTop:
+ m_pImpl->m_bGutterAtTop = nIntValue != 0;
+ break;
default:
{
#ifdef DBG_UTIL
@@ -885,6 +889,8 @@ bool SettingsTable::GetNoLeading() const
return m_pImpl->m_bNoLeading;
}
+bool SettingsTable::GetGutterAtTop() const { return m_pImpl->m_bGutterAtTop; }
+
}//namespace dmapper
} //namespace writerfilter
diff --git a/writerfilter/source/dmapper/SettingsTable.hxx b/writerfilter/source/dmapper/SettingsTable.hxx
index f7cf2793861a..79defda867df 100644
--- a/writerfilter/source/dmapper/SettingsTable.hxx
+++ b/writerfilter/source/dmapper/SettingsTable.hxx
@@ -94,6 +94,7 @@ public:
sal_Int32 GetWordCompatibilityMode() const;
const OUString& GetCurrentDatabaseDataSource() const;
+ bool GetGutterAtTop() const;
private:
// Properties