From 776a0b7bae60215996e7d5a0f73a24417414b9bb Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sat, 31 Jan 2015 10:55:39 +0100 Subject: tdf#88583 MSWordExportBase: fix handling of paragraph background color MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regression from 7d9bb549d498d6beed2c4050c402d09643febdfa (Related: i#124638 Second step of DrawingLayer FillAttributes..., 2014-06-02), the problem was that exporters still expect an SvxBrushItem for the para background color, while doc model was changed to have an XFillStyleItem / XFillColorItem pair instead. (cherry picked from commit 60cdeb2d441a6bf5c55f511f574b2b9dd598fbb8) Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport.cxx Change-Id: Ib94fda103ec35a6f087307aafdd890183d9d935f Reviewed-on: https://gerrit.libreoffice.org/14328 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- sw/qa/extras/ooxmlexport/data/tdf88583.odt | Bin 0 -> 8471 bytes sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 7 +++++++ sw/source/filter/ww8/ww8atr.cxx | 8 ++++++++ 3 files changed, 15 insertions(+) create mode 100644 sw/qa/extras/ooxmlexport/data/tdf88583.odt diff --git a/sw/qa/extras/ooxmlexport/data/tdf88583.odt b/sw/qa/extras/ooxmlexport/data/tdf88583.odt new file mode 100644 index 000000000000..307ab1e780d7 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf88583.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index c4a7934f3a1f..64dcfd75cdb9 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -606,6 +606,13 @@ DECLARE_OOXMLEXPORT_TEST(testNumOverrideStart, "num-override-start.docx") CPPUNIT_ASSERT_EQUAL(sal_Int16(3), comphelper::SequenceAsHashMap(xRules->getByIndex(1))["StartWith"].get()); } +DECLARE_OOXMLEXPORT_TEST(testTdf88583, "tdf88583.odt") +{ + if (xmlDocPtr pXmlDoc = parseExport()) + // had no child element, paragraph background was lost. + assertXPath(pXmlDoc, "//w:pPr/w:shd", "fill", "00CC00"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 5c87dd6e9c2a..d105bf55638d 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -304,6 +304,14 @@ void MSWordExportBase::OutputItemSet( const SfxItemSet& rSet, bool bPapFmt, bool (nWhich >= XATTR_FILL_FIRST && nWhich < XATTR_FILL_LAST)) AttrOutput().OutputItem( *pItem ); } + + // Has to be called after RES_PARATR_GRABBAG is processed. + const XFillStyleItem* pXFillStyleItem(static_cast(rSet.GetItem(XATTR_FILLSTYLE))); + if (pXFillStyleItem && pXFillStyleItem->GetValue() == drawing::FillStyle_SOLID && !rSet.HasItem(RES_BACKGROUND)) + { + // Construct an SvxBrushItem, as expected by the exporters. + AttrOutput().OutputItem(getSvxBrushItemFromSourceSet(rSet, RES_BACKGROUND)); + } } pISet = 0; // fuer Doppel-Attribute } -- cgit v1.2.3