[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - oox/source sw/qa writerfilter/source

Attila Bakos (NISZ) (via logerrit) logerrit at kemper.freedesktop.org
Mon Mar 1 11:58:51 UTC 2021


 oox/source/vml/vmlshape.cxx                       |    2 -
 sw/qa/extras/layout/data/tdf138465min.docx        |binary
 sw/qa/extras/layout/layout2.cxx                   |   16 ++++++++++++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   29 ++++++++++++++--------
 4 files changed, 36 insertions(+), 11 deletions(-)

New commits:
commit 2b20826a6a5d06a9e47c90918375a40465567716
Author:     Attila Bakos (NISZ) <bakos.attilakaroly at nisz.hu>
AuthorDate: Thu Feb 18 13:42:00 2021 +0100
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Mon Mar 1 12:58:04 2021 +0100

    tdf#136570 OOXML import: fix height of OLE objects
    
    e.g. OLE icons or math formulas by skipping unset
    border properties.
    
    Regression from 636d16efe45a55c1a5a7a451c46fbb8618bf0393
    (tdf#135653 OOXML import: fix OLE background color).
    
    Change-Id: I64bd68037d063de81fbb302b90d65b77af50a622
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111119
    Tested-by: László Németh <nemeth at numbertext.org>
    Reviewed-by: László Németh <nemeth at numbertext.org>
    (cherry picked from commit ca7855c24af858f52a11a593761ee9e6b9d6ba79)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111581
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>

diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx
index 7ee10203341e..5bceff932a24 100644
--- a/oox/source/vml/vmlshape.cxx
+++ b/oox/source/vml/vmlshape.cxx
@@ -1454,7 +1454,7 @@ Reference< XShape > ComplexShape::implConvertAndInsert( const Reference< XShapes
         oox::drawingml::ShapePropertyMap aPropMap(mrDrawing.getFilter().getModelObjectHelper());
         const GraphicHelper& rGraphicHelper = mrDrawing.getFilter().getGraphicHelper();
         maTypeModel.maStrokeModel.pushToPropMap(aPropMap, rGraphicHelper);
-        //And, fill-color properties as well...
+        // And, fill-color properties as well...
         maTypeModel.maFillModel.pushToPropMap(aPropMap, rGraphicHelper);
         PropertySet(xShape).setProperties(aPropMap);
 
diff --git a/sw/qa/extras/layout/data/tdf138465min.docx b/sw/qa/extras/layout/data/tdf138465min.docx
new file mode 100755
index 000000000000..d576a54f281f
Binary files /dev/null and b/sw/qa/extras/layout/data/tdf138465min.docx differ
diff --git a/sw/qa/extras/layout/layout2.cxx b/sw/qa/extras/layout/layout2.cxx
index 46ce68a04572..ff07375bfabb 100644
--- a/sw/qa/extras/layout/layout2.cxx
+++ b/sw/qa/extras/layout/layout2.cxx
@@ -488,6 +488,22 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf126425)
     assertXPath(pXmlDoc, "//textarray", 14);
 }
 
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testUnusedOLEprops)
+{
+    CPPUNIT_ASSERT(createDoc("tdf138465min.docx"));
+
+    xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+    CPPUNIT_ASSERT(pXmlDoc);
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: >300
+    // - Actual  : 142
+    // i.e. the formula squashed
+    CPPUNIT_ASSERT_GREATEREQUAL(
+        double(300),
+        getXPath(pXmlDoc, "/root/page/body/txt[2]/anchored/fly/notxt/infos/bounds", "height")
+            .toDouble());
+}
+
 CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf123268)
 {
     SwDoc* pDoc = createDoc("tdf123268.odt");
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 2d79c618b8a1..ee7cf88dfbc8 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -2303,11 +2303,13 @@ void DomainMapper_Impl::appendOLE( const OUString& rStreamName, const std::share
             xReplacementProperties->getPropertyValue("LineWidth") >>= aBorderProps.LineWidth;
             xReplacementProperties->getPropertyValue("LineStyle") >>= aBorderProps.LineStyle;
 
-            xOLEProperties->setPropertyValue("RightBorder", uno::Any(aBorderProps));
-            xOLEProperties->setPropertyValue("TopBorder", uno::Any(aBorderProps));
-            xOLEProperties->setPropertyValue("LeftBorder", uno::Any(aBorderProps));
-            xOLEProperties->setPropertyValue("BottomBorder", uno::Any(aBorderProps));
-
+            if (aBorderProps.LineStyle) // Set line props only if LineStyle is set
+            {
+                xOLEProperties->setPropertyValue("RightBorder", uno::Any(aBorderProps));
+                xOLEProperties->setPropertyValue("TopBorder", uno::Any(aBorderProps));
+                xOLEProperties->setPropertyValue("LeftBorder", uno::Any(aBorderProps));
+                xOLEProperties->setPropertyValue("BottomBorder", uno::Any(aBorderProps));
+            }
             OUString pProperties[] = {
                 "AnchorType",
                 "Surround",
@@ -2321,17 +2323,24 @@ void DomainMapper_Impl::appendOLE( const OUString& rStreamName, const std::share
                 "LeftMargin",
                 "RightMargin",
                 "TopMargin",
-                "BottomMargin",
-                "FillStyle",
-                "FillColor",
-                "FillColor2",
-                "LineStyle",
+                "BottomMargin"
             };
             for (const OUString& s : pProperties)
             {
                 const uno::Any aVal = xReplacementProperties->getPropertyValue(s);
                 xOLEProperties->setPropertyValue(s, aVal);
             }
+
+            if (xReplacementProperties->getPropertyValue("FillStyle").get<css::drawing::FillStyle>()
+                != css::drawing::FillStyle::FillStyle_NONE) // Apply fill props if style is set
+            {
+                xOLEProperties->setPropertyValue(
+                    "FillStyle", xReplacementProperties->getPropertyValue("FillStyle"));
+                xOLEProperties->setPropertyValue(
+                    "FillColor", xReplacementProperties->getPropertyValue("FillColor"));
+                xOLEProperties->setPropertyValue(
+                    "FillColor2", xReplacementProperties->getPropertyValue("FillColor2"));
+            }
         }
         else
             // mimic the treatment of graphics here... it seems anchoring as character


More information about the Libreoffice-commits mailing list