Kaydet (Commit) 5dfd5755 authored tarafından Miklos Vajna's avatar Miklos Vajna

oox smartart, org chart: fix font color when defined with quick styles

createStyleMatrixContext() assumed that <dgm:style> contains
<dgm:fontRef>, but it contains <a:fontRef> instead.

This resulted in a 0 mnThemedIdx, which meant that since commit
89206c47 (bnc#862510: PPTX import: Wrong
text color inside shape, 2014-12-21) we ignored the theme color in
oox::drawingml::Shape::createAndInsert().

Change-Id: I81045fa58df5cb9e31a4ed3f1b1625224bcd06ad
Reviewed-on: https://gerrit.libreoffice.org/65938Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
üst c5a7e5d9
...@@ -111,7 +111,7 @@ DiagramQStylesFragmentHandler::DiagramQStylesFragmentHandler( XmlFilterBase& rFi ...@@ -111,7 +111,7 @@ DiagramQStylesFragmentHandler::DiagramQStylesFragmentHandler( XmlFilterBase& rFi
const AttributeList& rAttribs, const AttributeList& rAttribs,
ShapeStyleRef& o_rStyle ) ShapeStyleRef& o_rStyle )
{ {
o_rStyle.mnThemedIdx = (nElement == DGM_TOKEN(fontRef)) ? o_rStyle.mnThemedIdx = (nElement == A_TOKEN(fontRef)) ?
rAttribs.getToken( XML_idx, XML_none ) : rAttribs.getInteger( XML_idx, 0 ); rAttribs.getToken( XML_idx, XML_none ) : rAttribs.getInteger( XML_idx, 0 );
return new ColorContext( *this, o_rStyle.maPhClr ); return new ColorContext( *this, o_rStyle.maPhClr );
} }
......
...@@ -700,6 +700,17 @@ void SdImportTestSmartArt::testOrgChart() ...@@ -700,6 +700,17 @@ void SdImportTestSmartArt::testOrgChart()
CPPUNIT_ASSERT(xManager.is()); CPPUNIT_ASSERT(xManager.is());
CPPUNIT_ASSERT_EQUAL(OUString("Manager"), xManager->getString()); CPPUNIT_ASSERT_EQUAL(OUString("Manager"), xManager->getString());
uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xManager, uno::UNO_QUERY);
uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
uno::Reference<text::XTextRange> xPara(xParaEnum->nextElement(), uno::UNO_QUERY);
uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xPara, uno::UNO_QUERY);
uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration();
uno::Reference<beans::XPropertySet> xRun(xRunEnum->nextElement(), uno::UNO_QUERY);
sal_Int32 nActualColor = xRun->getPropertyValue("CharColor").get<sal_Int32>();
// Without the accompanying fix in place, this test would have failed: the
// "Manager" font color was black, not white.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xffffff), nActualColor);
uno::Reference<drawing::XShape> xManagerShape(xManager, uno::UNO_QUERY); uno::Reference<drawing::XShape> xManagerShape(xManager, uno::UNO_QUERY);
CPPUNIT_ASSERT(xManagerShape.is()); CPPUNIT_ASSERT(xManagerShape.is());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment