[Libreoffice-commits] core.git: sw/qa sw/source writerfilter/source

Miklos Vajna (via logerrit) logerrit at kemper.freedesktop.org
Fri Feb 5 10:16:01 UTC 2021


 sw/qa/extras/ooxmlexport/data/gutter-top.docx     |binary
 sw/qa/extras/ooxmlexport/ooxmlexport16.cxx        |   14 ++++++++++++++
 sw/source/filter/ww8/docxexport.cxx               |    5 +++++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |    4 ++++
 writerfilter/source/dmapper/SettingsTable.cxx     |    6 ++++++
 writerfilter/source/dmapper/SettingsTable.hxx     |    1 +
 6 files changed, 30 insertions(+)

New commits:
commit 506bacb79ab96656de9168d0db3e3159c6bde3b0
Author:     Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Fri Feb 5 10:03:04 2021 +0100
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Fri Feb 5 11:15:16 2021 +0100

    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 at collabora.com>
    Tested-by: Jenkins

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
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/gutter-top.docx 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


More information about the Libreoffice-commits mailing list