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:
parent
78547c3374
commit
7c5aaa254f
@ -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;
|
||||
}
|
||||
|
||||
|
BIN
sd/qa/unit/data/pptx/tdf104201.pptx
Executable file
BIN
sd/qa/unit/data/pptx/tdf104201.pptx
Executable file
Binary file not shown.
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user