sw/qa/extras/odfimport/data/fdo90130-1.odt |binary sw/qa/extras/odfimport/data/fdo90130-2.odt |binary sw/qa/extras/odfimport/odfimport.cxx | 20 ++++++++++++++++++++ sw/source/core/unocore/unoframe.cxx | 23 +++++++++++++++-------- 4 files changed, 35 insertions(+), 8 deletions(-)
New commits: commit 5c17754f824987b26b3aa2f126b383f117b2e63e Author: Caolán McNamara <caol...@redhat.com> Date: Mon Apr 13 20:56:45 2015 +0100 Resolves: tdf#90130 don't clobber new solid-color on seeing old transparency ...and tdf#90130 gradient transparency goes missing (cherry picked from commit bc892b04144d82507ccd59953c9f4da357c2e7b4) Change-Id: I1ea86dca37cbce416564c5e198779dd132125b02 Reviewed-on: https://gerrit.libreoffice.org/15291 Tested-by: Michael Stahl <mst...@redhat.com> Reviewed-by: Michael Stahl <mst...@redhat.com> diff --git a/sw/qa/extras/odfimport/data/fdo90130-1.odt b/sw/qa/extras/odfimport/data/fdo90130-1.odt new file mode 100644 index 0000000..6839b36 Binary files /dev/null and b/sw/qa/extras/odfimport/data/fdo90130-1.odt differ diff --git a/sw/qa/extras/odfimport/data/fdo90130-2.odt b/sw/qa/extras/odfimport/data/fdo90130-2.odt new file mode 100644 index 0000000..6cf08950 Binary files /dev/null and b/sw/qa/extras/odfimport/data/fdo90130-2.odt differ diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx index e880ee0..c0534d7 100644 --- a/sw/qa/extras/odfimport/odfimport.cxx +++ b/sw/qa/extras/odfimport/odfimport.cxx @@ -548,6 +548,26 @@ DECLARE_ODFIMPORT_TEST(fdo81223, "fdo81223.odt") CPPUNIT_ASSERT_EQUAL(sal_Int32(0xfeffffff), nValue); } +DECLARE_ODFIMPORT_TEST(fdo90130_1, "fdo90130-1.odt") +{ + uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY); + sal_Int32 nValue(0); + xFrame->getPropertyValue("BackColor") >>= nValue; + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x00ff3333), nValue); +} + +DECLARE_ODFIMPORT_TEST(fdo90130_2, "fdo90130-2.odt") +{ + uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY); + sal_Int32 nValue(0); + xFrame->getPropertyValue("BackColorTransparency") >>= nValue; + CPPUNIT_ASSERT_EQUAL(sal_Int32(50), nValue); +} + DECLARE_ODFIMPORT_TEST(testBnc800714, "bnc800714.fodt") { // Document's second paragraph wants to be together with the third one, but: diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index db5cb5b..7cd950e 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -352,6 +352,9 @@ bool BaseFrameProperties_Impl::FillBaseProperties(SfxItemSet& rToSet, const SfxI aXFillColorItem.PutValue(*pXFillColorItem); rToSet.Put(aXFillColorItem); + //set old-school brush color if we later encounter the + //MID_BACK_COLOR_TRANSPARENCY case below + aBrush = getSvxBrushItemFromSourceSet(rToSet, RES_BACKGROUND, false); } else if (aXFillStyleItem.GetValue() == drawing::FillStyle_SOLID && (pCol || pRGBCol)) { @@ -446,20 +449,24 @@ bool BaseFrameProperties_Impl::FillBaseProperties(SfxItemSet& rToSet, const SfxI } } - if(pXFillTransparenceItem) + if (pXFillTransparenceItem) { - const XGradient aNullGrad(RGB_Color(COL_BLACK), RGB_Color(COL_WHITE)); XFillTransparenceItem aXFillTransparenceItem; - aXFillTransparenceItem.PutValue(*pXFillTransparenceItem); rToSet.Put(aXFillTransparenceItem); } - else if (aXFillStyleItem.GetValue() == drawing::FillStyle_SOLID && pColTrans) + else if (pColTrans) { - // Fill style is set to solid, but no fill transparency is given. - // On the other hand, we have a BackColorTransparency, so use that. - aBrush.PutValue(*pColTrans, MID_BACK_COLOR_TRANSPARENCY); - setSvxBrushItemAsFillAttributesToTargetSet(aBrush, rToSet); + // No fill transparency is given. On the other hand, we have a + // BackColorTransparency, so use that. + sal_Int8 nGraphicTransparency(0); + *pColTrans >>= nGraphicTransparency; + rToSet.Put(XFillTransparenceItem(nGraphicTransparency)); + if (aXFillStyleItem.GetValue() == drawing::FillStyle_SOLID) + { + aBrush.PutValue(*pColTrans, MID_BACK_COLOR_TRANSPARENCY); + setSvxBrushItemAsFillAttributesToTargetSet(aBrush, rToSet); + } } if(pXGradientStepCountItem)
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits