oox/source/drawingml/fillproperties.cxx | 5 +++-- sw/qa/extras/uiwriter/uiwriter4.cxx | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-)
New commits: commit 642f85b234d61ed87ee74f94b713321572e6774e Author: Tünde Tóth <toth.tu...@nisz.hu> AuthorDate: Wed Dec 8 11:13:24 2021 +0100 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Dec 21 21:23:24 2021 +0100 tdf#127989 OOXML: fix import of transparent hatching Set FillBackground property of hatching fill to false, if the alpha value is 0 in the <a:bgClr> element, i.e. if it's a transparent hatching. This way the previous non-transparent hatching is transparent now. Change-Id: I483d5c654be55e74c9073769b06f185526429635 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126550 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> (cherry picked from commit 001afbed910b7e565f602c1b11b1b4538cd59442) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127247 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx index 12d2cd9ad2fd..6a60a685c84f 100644 --- a/oox/source/drawingml/fillproperties.cxx +++ b/oox/source/drawingml/fillproperties.cxx @@ -816,8 +816,9 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap, // Set background color for hatch if(maPatternProps.maPattBgColor.isUsed()) { - rPropMap.setProperty( ShapeProperty::FillBackground, true ); - rPropMap.setProperty( ShapeProperty::FillColor, maPatternProps.maPattBgColor.getColor( rGraphicHelper, nPhClr ) ); + aColor = maPatternProps.maPattBgColor; + rPropMap.setProperty( ShapeProperty::FillBackground, aColor.getTransparency() != 100 ); + rPropMap.setProperty( ShapeProperty::FillColor, aColor.getColor( rGraphicHelper, nPhClr ) ); } } else if ( maPatternProps.maPattBgColor.isUsed() ) diff --git a/sw/qa/extras/uiwriter/uiwriter4.cxx b/sw/qa/extras/uiwriter/uiwriter4.cxx index 44d48697799f..015a065f543b 100644 --- a/sw/qa/extras/uiwriter/uiwriter4.cxx +++ b/sw/qa/extras/uiwriter/uiwriter4.cxx @@ -286,6 +286,7 @@ public: void testTdf129270(); void testInsertPdf(); void testTdf143760WrapContourToOff(); + void testTdf127989(); CPPUNIT_TEST_SUITE(SwUiWriterTest4); CPPUNIT_TEST(testTdf96515); @@ -406,6 +407,7 @@ public: CPPUNIT_TEST(testTdf129270); CPPUNIT_TEST(testInsertPdf); CPPUNIT_TEST(testTdf143760WrapContourToOff); + CPPUNIT_TEST(testTdf127989); CPPUNIT_TEST_SUITE_END(); }; @@ -3816,6 +3818,32 @@ void SwUiWriterTest4::testTdf143760WrapContourToOff() CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(getShape(1), "SurroundContour")); } +void SwUiWriterTest4::testTdf127989() +{ + createSwDoc(); + + // Add a rectangle shape to the document. + uno::Reference<css::lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<drawing::XShape> xShape( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShape->setSize(awt::Size(10000, 10000)); + xShape->setPosition(awt::Point(1000, 1000)); + uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY); + xShapeProps->setPropertyValue("FillStyle", uno::makeAny(drawing::FillStyle_HATCH)); + xShapeProps->setPropertyValue("FillHatchName", uno::makeAny(OUString("Black 0 Degrees"))); + xShapeProps->setPropertyValue("FillBackground", uno::makeAny(false)); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + xDrawPage->add(xShape); + + // Save it as DOCX and load it again. + reload("Office Open XML Text", "tdf127989.docx"); + CPPUNIT_ASSERT_EQUAL(1, getShapes()); + + // Without fix this had failed, because the background of the hatch was not set as 'no background'. + CPPUNIT_ASSERT(!getProperty<bool>(getShape(1), "FillBackground")); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest4); CPPUNIT_PLUGIN_IMPLEMENT();