sw/inc/format.hxx | 1 + sw/inc/frmfmt.hxx | 1 + sw/inc/swtblfmt.hxx | 6 ++++++ sw/qa/extras/ww8export/data/cell-bg-color.odt |binary sw/qa/extras/ww8export/ww8export.cxx | 8 ++++++++ sw/source/core/attr/format.cxx | 20 ++++++++++++-------- sw/source/core/inc/frame.hxx | 1 + sw/source/core/layout/atrfrm.cxx | 15 ++++++++++----- sw/source/core/layout/findfrm.cxx | 12 ++++++++++++ sw/source/core/layout/frmtool.cxx | 18 +++++++++++------- sw/source/core/layout/paintfrm.cxx | 2 +- sw/source/core/table/swtable.cxx | 15 +++++++++++++++ sw/source/filter/ww8/ww8atr.cxx | 16 ++++------------ 13 files changed, 82 insertions(+), 33 deletions(-)
New commits: commit d3de12fcfc85feb36eda3b0495807ef11d8fe772 Author: Caolán McNamara <caol...@redhat.com> Date: Mon Sep 29 10:11:02 2014 +0100 Resolves: fdo#81277 missing table cell background color in doc/html import a regression from one of the DrawingLayer FillAttributes changes of... commit 7d9bb549d498d6beed2c4050c402d09643febdfa Author: Armin Le Grand <a...@apache.org> Date: Mon Jun 2 15:00:50 2014 +0000 Related: #i124638# Second step of DrawingLayer FillAttributes... for Writer objects, now added support for Paragraph and PageStyle (including Header and Footer) for direct attributes and style attributes commit 4a0b5e569d070c286daefb0fdfe45c0dd15d241c Author: Armin Le Grand <a...@apache.org> Date: Thu Apr 17 16:44:58 2014 +0000 i#124638 support for DrawingLayre FillStyle for GraphicFrames and ... ... EmbeddedObjectFrames in Writer commit 6e61ecd09679a66060f932835622821d39e92f01 Author: Armin Le Grand <a...@apache.org> Date: Wed Mar 19 16:17:02 2014 +0000 Merge back branch alg_writerframes to trunk all of which set all RES_FLYFRMFMT and RES_FRMFMT SwFmts to use the new fill attributes, but a) didn't change the aTableBoxSetRange for SwTableBoxFmt to include the XFILL attributes, so importing cell bgs from .doc got dropped b) didn't make any effort in the uno api for XCells to do the same sort of mapping that was done for XFrames its unclear to me if SwDrawFrmFmt is actually adapted or not, I've assumed that it is here Change-Id: I8d71def2aef6163099a16591f9e53ba2b430bd06 diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx index 9a52566..1b60569 100644 --- a/sw/inc/format.hxx +++ b/sw/inc/format.hxx @@ -334,6 +334,7 @@ public: //UUUU Access to DrawingLayer FillAttributes in a preprocessed form for primitive usage virtual drawinglayer::attribute::SdrAllFillAttributesHelperPtr getSdrAllFillAttributesHelper() const; + virtual bool IsAdaptedToNewFillProperties() const; }; inline void SwFmt::SetName( const sal_Char* pNewName, diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx index 0a2a2ca..715f92a 100644 --- a/sw/inc/frmfmt.hxx +++ b/sw/inc/frmfmt.hxx @@ -138,6 +138,7 @@ public: //UUUU Access to DrawingLayer FillAttributes in a preprocessed form for primitive usage virtual drawinglayer::attribute::SdrAllFillAttributesHelperPtr getSdrAllFillAttributesHelper() const SAL_OVERRIDE; + virtual bool IsAdaptedToNewFillProperties() const SAL_OVERRIDE; }; // The FlyFrame-Format diff --git a/sw/inc/swtblfmt.hxx b/sw/inc/swtblfmt.hxx index 914e8c6..142959e 100644 --- a/sw/inc/swtblfmt.hxx +++ b/sw/inc/swtblfmt.hxx @@ -41,6 +41,8 @@ public: TYPEINFO_OVERRIDE(); // Already in base class Content. DECL_FIXEDMEMPOOL_NEWDEL(SwTableFmt) + + virtual bool IsAdaptedToNewFillProperties() const SAL_OVERRIDE; }; class SwTableLineFmt : public SwFrmFmt @@ -61,6 +63,8 @@ public: TYPEINFO_OVERRIDE(); // Already in base class Content. DECL_FIXEDMEMPOOL_NEWDEL(SwTableLineFmt) + + virtual bool IsAdaptedToNewFillProperties() const SAL_OVERRIDE; }; class SW_DLLPUBLIC SwTableBoxFmt : public SwFrmFmt @@ -84,6 +88,8 @@ public: TYPEINFO_OVERRIDE(); // Already in base class Content. DECL_FIXEDMEMPOOL_NEWDEL(SwTableBoxFmt) + + virtual bool IsAdaptedToNewFillProperties() const SAL_OVERRIDE; }; #endif diff --git a/sw/qa/extras/ww8export/data/cell-bg-color.odt b/sw/qa/extras/ww8export/data/cell-bg-color.odt new file mode 100644 index 0000000..3565f40 Binary files /dev/null and b/sw/qa/extras/ww8export/data/cell-bg-color.odt differ diff --git a/sw/qa/extras/ww8export/ww8export.cxx b/sw/qa/extras/ww8export/ww8export.cxx index 60f583b..87da930 100644 --- a/sw/qa/extras/ww8export/ww8export.cxx +++ b/sw/qa/extras/ww8export/ww8export.cxx @@ -372,6 +372,14 @@ DECLARE_WW8EXPORT_TEST(testRedlineExport3, "redline-export-3.odt") CPPUNIT_ASSERT_EQUAL(false, hasProperty(getRun(getParagraph(2), 2), "RedlineType")); } +DECLARE_WW8EXPORT_TEST(testCellBgColor, "cell-bg-color.odt") +{ + uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY); + uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0xCC0000), getProperty<sal_Int32>(xTable->getCellByName("A1"), "BackColor")); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/attr/format.cxx b/sw/source/core/attr/format.cxx index 6a34f60..6d36e80 100644 --- a/sw/source/core/attr/format.cxx +++ b/sw/source/core/attr/format.cxx @@ -27,6 +27,7 @@ #include <hints.hxx> #include <paratr.hxx> #include <swcache.hxx> +#include <swtblfmt.hxx> #include <svl/grabbagitem.hxx> #include <com/sun/star/beans/PropertyValues.hpp> @@ -390,9 +391,14 @@ bool SwFmt::SetDerivedFrom(SwFmt *pDerFrom) return true; } +bool SwFmt::IsAdaptedToNewFillProperties() const +{ + return false; +} + const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich, bool bInParents ) const { - if(RES_BACKGROUND == nWhich && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if (RES_BACKGROUND == nWhich && IsAdaptedToNewFillProperties()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] SAL_INFO("sw.core", "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes or makeBackgroundBrushItem (simple fallback is in place and used)"); @@ -411,7 +417,7 @@ const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich, bool bInParents ) const SfxItemState SwFmt::GetItemState( sal_uInt16 nWhich, bool bSrchInParent, const SfxPoolItem **ppItem ) const { - if(RES_BACKGROUND == nWhich && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if (RES_BACKGROUND == nWhich && IsAdaptedToNewFillProperties()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] SAL_INFO("sw.core", "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes or SwFmt::GetBackgroundStat (simple fallback is in place and used)"); @@ -446,7 +452,7 @@ SfxItemState SwFmt::GetItemState( sal_uInt16 nWhich, bool bSrchInParent, const S SfxItemState SwFmt::GetBackgroundState(SvxBrushItem &rItem, bool bSrchInParent) const { - if (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) + if (IsAdaptedToNewFillProperties()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] const drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFill = getSdrAllFillAttributesHelper(); @@ -483,7 +489,7 @@ bool SwFmt::SetFmtAttr( const SfxPoolItem& rAttr ) bool bRet = false; //UUUU - if(RES_BACKGROUND == rAttr.Which() && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if (RES_BACKGROUND == rAttr.Which() && IsAdaptedToNewFillProperties()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] SAL_INFO("sw.core", "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes (simple fallback is in place and used)"); @@ -584,8 +590,7 @@ bool SwFmt::SetFmtAttr( const SfxItemSet& rSet ) GetDoc()->CheckForUniqueItemForLineFillNameOrIndex(aTempSet); } - //UUUU FlyFrame PageStyle - if(RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) + if (IsAdaptedToNewFillProperties()) { const SfxPoolItem* pSource = 0; @@ -818,8 +823,7 @@ void SwFmt::SetGrabBagItem(const uno::Any& rVal) //UUUU SvxBrushItem SwFmt::makeBackgroundBrushItem(bool bInP) const { - //UUUU FlyFrame PageStyle - if(RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) + if (IsAdaptedToNewFillProperties()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] SAL_INFO("sw.core", "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes (simple fallback is in place and used)"); diff --git a/sw/source/core/inc/frame.hxx b/sw/source/core/inc/frame.hxx index 2f0a19c..48105d9 100644 --- a/sw/source/core/inc/frame.hxx +++ b/sw/source/core/inc/frame.hxx @@ -895,6 +895,7 @@ public: //UUUU drawinglayer::attribute::SdrAllFillAttributesHelperPtr getSdrAllFillAttributesHelper() const; + bool IsAdaptedToNewFillProperties() const; public: // if writer is NULL, dumps the layout structure as XML in layout.xml diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx index d36d22a..1b11a28 100644 --- a/sw/source/core/layout/atrfrm.cxx +++ b/sw/source/core/layout/atrfrm.cxx @@ -2423,6 +2423,11 @@ SwFrmFmt::SwFrmFmt( { } +bool SwFrmFmt::IsAdaptedToNewFillProperties() const +{ + return true; +} + void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { SwFmtHeader *pH = 0; @@ -2438,7 +2443,7 @@ void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) RES_FOOTER, false, (const SfxPoolItem**)&pF ); //UUUU reset fill information - if(maFillAttributes.get() && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if (maFillAttributes.get() && IsAdaptedToNewFillProperties()) { SfxItemIter aIter(*((SwAttrSetChg*)pNew)->GetChgSet()); bool bReset(false); @@ -2457,7 +2462,7 @@ void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) else if(RES_FMT_CHG == nWhich) { //UUUU reset fill information on format change (e.g. style changed) - if(maFillAttributes.get() && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if (maFillAttributes.get() && IsAdaptedToNewFillProperties()) { maFillAttributes.reset(); } @@ -2978,7 +2983,7 @@ OUString SwFlyFrmFmt::GetObjDescription() const bool SwFlyFrmFmt::IsBackgroundTransparent() const { //UUUU - if((RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) && getSdrAllFillAttributesHelper()) + if (IsAdaptedToNewFillProperties() && getSdrAllFillAttributesHelper()) { return getSdrAllFillAttributesHelper()->isTransparent(); } @@ -3021,7 +3026,7 @@ bool SwFlyFrmFmt::IsBackgroundTransparent() const bool SwFlyFrmFmt::IsBackgroundBrushInherited() const { //UUUU - if((RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) && getSdrAllFillAttributesHelper()) + if (IsAdaptedToNewFillProperties() && getSdrAllFillAttributesHelper()) { return !getSdrAllFillAttributesHelper()->isUsed(); } @@ -3252,7 +3257,7 @@ IMapObject* SwFrmFmt::GetIMapObject( const Point& rPoint, //UUUU drawinglayer::attribute::SdrAllFillAttributesHelperPtr SwFrmFmt::getSdrAllFillAttributesHelper() const { - if(RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) + if (IsAdaptedToNewFillProperties()) { // create FillAttributes on demand if(!maFillAttributes.get()) diff --git a/sw/source/core/layout/findfrm.cxx b/sw/source/core/layout/findfrm.cxx index b6c9b00..9f30f82 100644 --- a/sw/source/core/layout/findfrm.cxx +++ b/sw/source/core/layout/findfrm.cxx @@ -570,6 +570,18 @@ drawinglayer::attribute::SdrAllFillAttributesHelperPtr SwFrm::getSdrAllFillAttri } } +bool SwFrm::IsAdaptedToNewFillProperties() const +{ + if (IsCntntFrm()) + { + return true; + } + else + { + return static_cast< const SwLayoutFrm* >(this)->GetFmt()->IsAdaptedToNewFillProperties(); + } +} + /* * SwFrm::_FindNext(), _FindPrev(), InvalidateNextPos() * _FindNextCnt() visits tables and sections and only returns SwCntntFrms. diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx index a4efd89..ceacf4a 100644 --- a/sw/source/core/layout/frmtool.cxx +++ b/sw/source/core/layout/frmtool.cxx @@ -207,17 +207,21 @@ SwFrmNotify::~SwFrmNotify() if ( bPrtWidth || bPrtHeight ) { //UUUU - drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFillAttributes(pFrm->getSdrAllFillAttributesHelper()); - - if(aFillAttributes.get() && aFillAttributes->isUsed()) + bool bUseNewFillProperties(false); + if (pFrm->IsAdaptedToNewFillProperties()) { - //UUUU use SetCompletePaint if needed - if(aFillAttributes->needCompleteRepaint()) + drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFillAttributes(pFrm->getSdrAllFillAttributesHelper()); + if(aFillAttributes.get() && aFillAttributes->isUsed()) { - pFrm->SetCompletePaint(); + bUseNewFillProperties = true; + //UUUU use SetCompletePaint if needed + if(aFillAttributes->needCompleteRepaint()) + { + pFrm->SetCompletePaint(); + } } } - else + if (!bUseNewFillProperties) { const SvxGraphicPosition ePos = pFrm->GetAttrSet()->GetBackground().GetGraphicPos(); if(GPOS_NONE != ePos && GPOS_TILED != ePos) diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index a1a0d8d..b3a538a 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -4129,7 +4129,7 @@ void SwFlyFrm::Paint(SwRect const& rRect, SwPrintData const*const) const { const SwFrmFmt* pSwFrmFmt = dynamic_cast< const SwFrmFmt* >(GetFmt()); - if(pSwFrmFmt && (RES_FLYFRMFMT == pSwFrmFmt->Which() || RES_FRMFMT == pSwFrmFmt->Which())) + if (pSwFrmFmt && pSwFrmFmt->IsAdaptedToNewFillProperties()) { //UUUU check for transparency const drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFillAttributes(pSwFrmFmt->getSdrAllFillAttributesHelper()); diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx index d45402c..e6c597b 100644 --- a/sw/source/core/table/swtable.cxx +++ b/sw/source/core/table/swtable.cxx @@ -2353,6 +2353,21 @@ void SwTableBoxFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) SwFrmFmt::Modify( pOld, pNew ); } +bool SwTableBoxFmt::IsAdaptedToNewFillProperties() const +{ + return false; +} + +bool SwTableFmt::IsAdaptedToNewFillProperties() const +{ + return false; +} + +bool SwTableLineFmt::IsAdaptedToNewFillProperties() const +{ + return false; +} + bool SwTableBox::HasNumCntnt( double& rNum, sal_uInt32& rFmtIndex, bool& rIsEmptyTxtNd ) const { diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 678c65f..0f99925 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -850,21 +850,13 @@ void MSWordExportBase::OutputFormat( const SwFmt& rFmt, bool bPapFmt, bool bChpF if (SfxItemState::SET != aSet.GetItemState(RES_SURROUND)) aSet.Put(SwFmtSurround(SURROUND_NONE)); - const XFillStyleItem* pXFillStyleItem(static_cast< const XFillStyleItem* >(rFrmFmt.GetAttrSet().GetItem(XATTR_FILLSTYLE))); - if (pXFillStyleItem) + // Construct an SvxBrushItem, as expected by the exporters. + if (rFrmFmt.IsAdaptedToNewFillProperties()) { - switch (pXFillStyleItem->GetValue()) + const XFillStyleItem* pXFillStyleItem(static_cast< const XFillStyleItem* >(rFrmFmt.GetAttrSet().GetItem(XATTR_FILLSTYLE))); + if (pXFillStyleItem) { - case drawing::FillStyle_NONE: - break; - case drawing::FillStyle_SOLID: - { - // Construct an SvxBrushItem, as expected by the exporters. aSet.Put(getSvxBrushItemFromSourceSet(rFrmFmt.GetAttrSet(), RES_BACKGROUND)); - break; - } - default: - break; } }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits