[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - sw/qa sw/source

Caolán McNamara caolanm at redhat.com
Tue Apr 14 12:27:34 PDT 2015


 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 <caolanm at 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 <mstahl at redhat.com>
    Reviewed-by: Michael Stahl <mstahl at 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)


More information about the Libreoffice-commits mailing list