oox/source/vml/vmlshape.cxx                                |   19 ++++---------
 sw/qa/extras/ooxmlexport/data/tdf100751_arrowBothFlip.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport3.cxx                  |   12 ++++++++
 3 files changed, 18 insertions(+), 13 deletions(-)

New commits:
commit cb441c4d0adf698e6af9073c6c3285a66b76871e
Author:     Szabolcs Toth <szabolcs...@gmail.com>
AuthorDate: Tue Mar 17 11:39:33 2020 +0100
Commit:     Balazs Varga <balazs.varga...@gmail.com>
CommitDate: Tue Mar 31 10:09:13 2020 +0200

    tdf#100751 DOCX VML shape import: fix arrow direction
    
    Flips along both the y- and x-axis weren't imported,
    resulting wrong direction of arrow and other shapes.
    
    Co-Author: Balázs Regényi
    
    Change-Id: Iac222ac2a6a6110289969c32b40828b83da0aefd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90646
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.varga...@gmail.com>

diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx
index 1c53a87b463e..bdd9ac593dd6 100644
--- a/oox/source/vml/vmlshape.cxx
+++ b/oox/source/vml/vmlshape.cxx
@@ -660,11 +660,11 @@ Reference< XShape > SimpleShape::implConvertAndInsert( 
const Reference< XShapes
         oRotation = ConversionHelper::decodeRotation(maTypeModel.maRotation);
     if (!maTypeModel.maFlip.isEmpty())
     {
-        if (maTypeModel.maFlip == "x")
+        if (maTypeModel.maFlip.startsWith("x"))
         {
             bFlipX = true;
         }
-        else if (maTypeModel.maFlip == "y")
+        if (maTypeModel.maFlip.endsWith("y"))
         {
             bFlipY = true;
         }
@@ -820,17 +820,10 @@ Reference< XShape > SimpleShape::implConvertAndInsert( 
const Reference< XShapes
         // When flip has 'x' or 'y', the associated ShapeRect will be changed 
but direction change doesn't occur.
         // It might occur internally in SdrObject of "sw" module, not here.
         // The associated properties "PROP_MirroredX" and "PROP_MirroredY" 
have to be set here so that direction change will occur internally.
-        if (bFlipX || bFlipY)
-        {
-            assert(!(bFlipX && bFlipY));
-            css::beans::PropertyValue aProp;
-            if (bFlipX)
-                aProp.Name = "MirroredX";
-            else
-                aProp.Name = "MirroredY";
-            aProp.Value <<= true;
-            aPropVec.push_back(aProp);
-        }
+        if (bFlipX)
+            aPropVec.push_back(comphelper::makePropertyValue("MirroredX", 
true));
+        if (bFlipY)
+            aPropVec.push_back(comphelper::makePropertyValue("MirroredY", 
true));
 
         if (!maTypeModel.maAdjustments.isEmpty())
         {
diff --git a/sw/qa/extras/ooxmlexport/data/tdf100751_arrowBothFlip.docx 
b/sw/qa/extras/ooxmlexport/data/tdf100751_arrowBothFlip.docx
new file mode 100644
index 000000000000..8a57f69eaef0
Binary files /dev/null and 
b/sw/qa/extras/ooxmlexport/data/tdf100751_arrowBothFlip.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
index 4a7219a90a86..498cf8a95772 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
@@ -1103,6 +1103,18 @@ DECLARE_OOXMLEXPORT_TEST(testVerticalBorders, 
"calendar3.docx")
     assertXPathChildren(pXmlDocument, 
"/w:document/w:body/w:tbl/w:tr[3]/w:tc[3]/w:tcPr/w:tcBorders", 2);
 }
 
+DECLARE_OOXMLEXPORT_TEST(testArrowFlipXY, "tdf100751_arrowBothFlip.docx")
+{
+    // tdf#100751: Both x and y flip should happen.
+
+    xmlDocPtr pXmlDocument = parseExport("word/document.xml");
+    if (!pXmlDocument)
+        return;
+
+    OUString arrowStyle = getXPath(pXmlDocument, 
"/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Fallback/w:pict/v:group/v:shape[2]",
 "style");
+    CPPUNIT_ASSERT(arrowStyle.indexOf(u"flip:xy") != sal_Int32(-1));
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to