Kaydet (Commit) 56218a88 authored tarafından Michael Stahl's avatar Michael Stahl Kaydeden (comit) Andras Timar

related: tdf#92379: sw: backward compatible ODF export of overriding

... frame/paragraph backgrounds.

If a style is set to have draw:fill="solid" and a derived style to
draw:fill="none" then the derived one must have
fo:background-color="transparent" to override the parent for old
consumers like LO <= 4.3/AOO <= 4.1 that don't understand draw:fill.

Change-Id: I5b56c7ace927338239195c6bfcfef1950544c8d2
(cherry picked from commit 25c50a71)
Reviewed-on: https://gerrit.libreoffice.org/18039Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst a19985cb
...@@ -284,6 +284,15 @@ DECLARE_ODFEXPORT_TEST(testTdf92379, "tdf92379.fodt") ...@@ -284,6 +284,15 @@ DECLARE_ODFEXPORT_TEST(testTdf92379, "tdf92379.fodt")
// CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(xStyle32, "FillColor")); // CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(xStyle32, "FillColor"));
// CPPUNIT_ASSERT_EQUAL(sal_Int16(100), getProperty<sal_Int16>(xStyle32, "FillTransparence")); // CPPUNIT_ASSERT_EQUAL(sal_Int16(100), getProperty<sal_Int16>(xStyle32, "FillTransparence"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x461900), getProperty<sal_Int32>(xStyle32, "CharColor")); CPPUNIT_ASSERT_EQUAL(sal_Int32(0x461900), getProperty<sal_Int32>(xStyle32, "CharColor"));
if (xmlDocPtr pXmlDoc = parseExport("styles.xml"))
{
// check that fo:background-color attribute is exported properly
assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='Titre Avis expert']/style:paragraph-properties[@fo:background-color='#661900']", 1);
assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='Avis expert questions']/style:paragraph-properties[@fo:background-color='transparent']", 1);
assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='avis expert questions non cadres']/style:paragraph-properties[@fo:background-color='#801900']", 1);
assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='Avis expert rXponses']/style:paragraph-properties[@fo:background-color='transparent']", 1);
}
} }
DECLARE_ODFEXPORT_TEST(testFdo79358, "fdo79358.odt") DECLARE_ODFEXPORT_TEST(testFdo79358, "fdo79358.odt")
......
...@@ -286,7 +286,18 @@ bool needToMapFillItemsToSvxBrushItemTypes(const SfxItemSet& rSet, ...@@ -286,7 +286,18 @@ bool needToMapFillItemsToSvxBrushItemTypes(const SfxItemSet& rSet,
switch (eFill) switch (eFill)
{ {
case drawing::FillStyle_NONE: case drawing::FillStyle_NONE:
return false; // ignoring some extremely limited XFillColorItem eval // claim that BackColor and BackTransparent are available so that
// fo:background="transparent" attribute is exported to override
// the parent style in case it is != NONE
switch (nMID)
{
case MID_BACK_COLOR:
case MID_BACK_COLOR_R_G_B:
case MID_GRAPHIC_TRANSPARENT: // this is *BackTransparent
return true;
default:
return false;
}
break; break;
case drawing::FillStyle_SOLID: case drawing::FillStyle_SOLID:
case drawing::FillStyle_GRADIENT: // gradient and hatch don't exist in case drawing::FillStyle_GRADIENT: // gradient and hatch don't exist in
...@@ -294,6 +305,7 @@ bool needToMapFillItemsToSvxBrushItemTypes(const SfxItemSet& rSet, ...@@ -294,6 +305,7 @@ bool needToMapFillItemsToSvxBrushItemTypes(const SfxItemSet& rSet,
switch (nMID) switch (nMID)
{ {
case MID_BACK_COLOR: case MID_BACK_COLOR:
case MID_GRAPHIC_TRANSPARENT: // this is *BackTransparent
// Gradient/Hatch always have emulated color // Gradient/Hatch always have emulated color
return (drawing::FillStyle_SOLID != eFill) return (drawing::FillStyle_SOLID != eFill)
|| SfxItemState::SET == rSet.GetItemState(XATTR_FILLCOLOR) || SfxItemState::SET == rSet.GetItemState(XATTR_FILLCOLOR)
......
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