[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.1' - oox/source sd/qa

Tamás Zolnai tamas.zolnai at collabora.com
Sun Nov 27 16:53:16 UTC 2016


 oox/source/drawingml/shape.cxx      |    6 +++---
 sd/qa/unit/data/pptx/tdf104201.pptx |binary
 sd/qa/unit/import-tests.cxx         |   36 ++++++++++++++++++++++++++++++++++++
 3 files changed, 39 insertions(+), 3 deletions(-)

New commits:
commit 7868b24a351eb5833c5b87756f78aa311ed84b4c
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
Date:   Sun Nov 27 17:49:41 2016 +0000

    tdf#104201: PPTX: Group solid fill is not imported
    
    Reviewed-on: https://gerrit.libreoffice.org/31263
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    Tested-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    (cherry picked from commit 7c5aaa254f444d54b9ebf6574f0ccd37af548ee5)
    
    Change-Id: Iec273714108598d7017e73a9e7d384f8410d6ee1

diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index c7dc122..7f78b9f 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1411,14 +1411,14 @@ FillProperties Shape::getActualFillProperties(const Theme* pTheme, const FillPro
         }
     }
 
+    // Properties specified directly for this shape
+    aFillProperties.assignUsed(getFillProperties());
+
     // Parent shape's properties
     if ( pParentShapeFillProps != nullptr)
         if( getFillProperties().moFillType.has() && getFillProperties().moFillType.get() == XML_grpFill )
             aFillProperties.assignUsed( *pParentShapeFillProps );
 
-    // Properties specified directly for this shape
-    aFillProperties.assignUsed( getFillProperties() );
-
     return aFillProperties;
 }
 
diff --git a/sd/qa/unit/data/pptx/tdf104201.pptx b/sd/qa/unit/data/pptx/tdf104201.pptx
new file mode 100755
index 0000000..99a6532
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf104201.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 2a330cc..72654ab 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -116,6 +116,7 @@ public:
     void testTdf103792();
     void testTdf103876();
     void testTdf104015();
+    void testTdf104201();
 
     CPPUNIT_TEST_SUITE(SdImportTest);
 
@@ -163,6 +164,7 @@ public:
     CPPUNIT_TEST(testTdf103792);
     CPPUNIT_TEST(testTdf103876);
     CPPUNIT_TEST(testTdf104015);
+    CPPUNIT_TEST(testTdf104201);
 
     CPPUNIT_TEST_SUITE_END();
 };
@@ -1314,6 +1316,40 @@ void SdImportTest::testTdf104015()
     xDocShRef->DoClose();
 }
 
+void SdImportTest::testTdf104201()
+{
+    // Group shape properties did not overwrite the child shapes' fill
+    sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("sd/qa/unit/data/pptx/tdf104201.pptx"), PPTX);
+
+    const SdrPage *pPage = GetPage(1, xDocShRef);
+    CPPUNIT_ASSERT_MESSAGE("No page found", pPage != nullptr);
+
+    // First shape has red fill, but this should be overwritten by green group fill
+    {
+        SdrObject *const pObj = pPage->GetObj(0);
+        CPPUNIT_ASSERT_MESSAGE("Wrong object", pObj != nullptr);
+        const XFillStyleItem& rStyleItem = dynamic_cast<const XFillStyleItem&>(
+            pObj->GetMergedItem(XATTR_FILLSTYLE));
+        CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue());
+        const XFillColorItem& rColorItem = dynamic_cast<const XFillColorItem&>(
+            pObj->GetMergedItem(XATTR_FILLCOLOR));
+        CPPUNIT_ASSERT_EQUAL(ColorData(0x00FF00), rColorItem.GetColorValue().GetColor());
+    }
+    // Scond shape has blue fill, but this should be overwritten by green group fill
+    {
+        SdrObject *const pObj = pPage->GetObj(0);
+        CPPUNIT_ASSERT_MESSAGE("Wrong object", pObj != nullptr);
+        const XFillStyleItem& rStyleItem = dynamic_cast<const XFillStyleItem&>(
+            pObj->GetMergedItem(XATTR_FILLSTYLE));
+        CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue());
+        const XFillColorItem& rColorItem = dynamic_cast<const XFillColorItem&>(
+            pObj->GetMergedItem(XATTR_FILLCOLOR));
+        CPPUNIT_ASSERT_EQUAL(ColorData(0x00FF00), rColorItem.GetColorValue().GetColor());
+    }
+
+    xDocShRef->DoClose();
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();


More information about the Libreoffice-commits mailing list