Hi, I have submitted a patch for review:
https://gerrit.libreoffice.org/4130 To pull it, you can do: git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/30/4130/1 fdo#65257 : DOCX not exporting background color Change-Id: Ida3f66d5adb063400494e1da589a463b4d7c2a86 --- A sw/qa/extras/ooxmlexport/data/page-background.docx M sw/qa/extras/ooxmlexport/ooxmlexport.cxx M sw/source/filter/ww8/docxexport.cxx 3 files changed, 34 insertions(+), 0 deletions(-) diff --git a/sw/qa/extras/ooxmlexport/data/page-background.docx b/sw/qa/extras/ooxmlexport/data/page-background.docx new file mode 100644 index 0000000..8c1f2ebd --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/page-background.docx Binary files differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 8dc69f2..a816854 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -69,6 +69,7 @@ void testMathLiteral(); void testFdo48557(); void testI120928(); + void testPageBackground(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -116,6 +117,7 @@ {"math-literal.docx", &Test::testMathLiteral}, {"fdo48557.odt", &Test::testFdo48557}, {"i120928.docx", &Test::testI120928}, + {"page-background.docx", &Test::testPageBackground}, }; // Don't test the first import of these, for some reason those tests fail const char* aBlacklist[] = { @@ -672,6 +674,13 @@ CPPUNIT_ASSERT_EQUAL(true, bIsGraphic); } +void Test::testPageBackground() +{ + // 'Document Background' wasn't exported. + uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName(DEFAULT_STYLE), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x92D050), getProperty<sal_Int32>(xPageStyle, "BackColor")); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx index ca46cae..5de892e 100644 --- a/sw/source/filter/ww8/docxexport.cxx +++ b/sw/source/filter/ww8/docxexport.cxx @@ -44,6 +44,7 @@ #include <frmfmt.hxx> #include <section.hxx> #include <ftninfo.hxx> +#include <pagedesc.hxx> #include <editeng/editobj.hxx> #include <editeng/outlobj.hxx> @@ -687,6 +688,16 @@ OString aZoom(OString::valueOf(sal_Int32(pViewShell->GetViewOptions()->GetZoom()))); pFS->singleElementNS(XML_w, XML_zoom, FSNS(XML_w, XML_percent), aZoom.getStr(), FSEND); + // Display Background Shape + const SwFrmFmt &rFmt = pDoc->GetPageDesc(0).GetMaster(); + const SfxPoolItem* pItem = 0; + SfxItemState eState = rFmt.GetItemState(RES_BACKGROUND, true, &pItem); + if (SFX_ITEM_SET == eState && pItem) + { + // Turn on the 'displayBackgroundShape' + pFS->singleElementNS( XML_w, XML_displayBackgroundShape, FSEND ); + } + // Track Changes if ( settings.trackRevisions ) pFS->singleElementNS( XML_w, XML_trackRevisions, FSEND ); @@ -729,6 +740,20 @@ // setup the namespaces m_pDocumentFS->startElementNS( XML_w, XML_document, MainXmlNamespaces( m_pDocumentFS )); + // Write background page color + const SwFrmFmt &rFmt = pDoc->GetPageDesc(0).GetMaster(); + const SfxPoolItem* pItem = 0; + SfxItemState eState = rFmt.GetItemState(RES_BACKGROUND, true, &pItem); + if (SFX_ITEM_SET == eState && pItem) + { + // The 'color' is set for the first page style - take it and use it as the background color of the entire DOCX + const SvxBrushItem* pBrush = (const SvxBrushItem*)pItem; + Color backgroundColor = pBrush->GetColor(); + OString aBackgroundColorStr = msfilter::util::ConvertColor(backgroundColor); + + m_pDocumentFS->singleElementNS( XML_w, XML_background, FSNS( XML_w, XML_color ), aBackgroundColorStr, FSEND ); + } + // body m_pDocumentFS->startElementNS( XML_w, XML_body, FSEND ); -- To view, visit https://gerrit.libreoffice.org/4130 To unsubscribe, visit https://gerrit.libreoffice.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ida3f66d5adb063400494e1da589a463b4d7c2a86 Gerrit-PatchSet: 1 Gerrit-Project: core Gerrit-Branch: master Gerrit-Owner: Adam CloudOn <rattles2...@gmail.com> _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice