tdf#104201: PPTX: Group solid fill is not imported

Change-Id: Iec273714108598d7017e73a9e7d384f8410d6ee1
Reviewed-on: https://gerrit.libreoffice.org/31263
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Tested-by: Tamás Zolnai <tamas.zolnai@collabora.com>
This commit is contained in:
Tamás Zolnai 2016-11-27 15:35:53 +01:00 committed by Tamás Zolnai
parent 78547c3374
commit 7c5aaa254f
3 changed files with 39 additions and 3 deletions

View File

@ -1462,14 +1462,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;
}

Binary file not shown.

View File

@ -130,6 +130,7 @@ public:
void testTdf103792();
void testTdf103876();
void testTdf104015();
void testTdf104201();
CPPUNIT_TEST_SUITE(SdImportTest);
@ -185,6 +186,7 @@ public:
CPPUNIT_TEST(testTdf103792);
CPPUNIT_TEST(testTdf103876);
CPPUNIT_TEST(testTdf104015);
CPPUNIT_TEST(testTdf104201);
CPPUNIT_TEST_SUITE_END();
};
@ -1585,6 +1587,40 @@ void SdImportTest::testTdf104015()
xDocShRef->DoClose();
}
void SdImportTest::testTdf104201()
{
// Group shape properties did not overwrite the child shapes' fill
sd::DrawDocShellRef xDocShRef = loadURL(m_directories.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();