summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-04-13 20:56:45 +0100
committerMichael Stahl <mstahl@redhat.com>2015-04-14 19:27:08 +0000
commit5c17754f824987b26b3aa2f126b383f117b2e63e (patch)
tree7280e19d1e41d697657e10b0afec6382e65b2a1e
parentfeb56c8eb39e886cd089eb9942f881ae25d80506 (diff)
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 <mstahl@redhat.com> Reviewed-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--sw/qa/extras/odfimport/data/fdo90130-1.odtbin0 -> 8606 bytes
-rw-r--r--sw/qa/extras/odfimport/data/fdo90130-2.odtbin0 -> 9148 bytes
-rw-r--r--sw/qa/extras/odfimport/odfimport.cxx20
-rw-r--r--sw/source/core/unocore/unoframe.cxx23
4 files changed, 35 insertions, 8 deletions
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 000000000000..6839b3635b37
--- /dev/null
+++ b/sw/qa/extras/odfimport/data/fdo90130-1.odt
Binary files 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 000000000000..6cf089505e8b
--- /dev/null
+++ b/sw/qa/extras/odfimport/data/fdo90130-2.odt
Binary files differ
diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx
index e880ee02b74f..c0534d798e89 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 db5cb5b39392..7cd950ef64ac 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)