sw/qa/extras/ooxmlexport/ooxmlexport18.cxx        |    6 ++++--
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |    6 ++++--
 2 files changed, 8 insertions(+), 4 deletions(-)
New commits:
commit 5120cc702741ee3bdded80336f33362e42bf4276
Author:     Justin Luth <justin.l...@collabora.com>
AuthorDate: Wed Jan 17 22:02:48 2024 -0500
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Mon Jan 22 14:22:11 2024 +0100

    tdf#159158 DOCX import: shape's last duplicate z-index wins
    
    It looks like for DOCX a duplicate always comes out on top,
    which is the exact opposite of what we have been doing so far.
    
    The ability to switch between "old" and "new" style was
    added for RTF's benefit, and cautiously expanded to
    include when RTF and DOCX IMPORT_AS_DETECTED_INLINE.
    
    This does not affect RTF, since AFAIK RTF cannot contain
    VML-Z-ORDER properties.
    
    Change-Id: I110e3db3fa504f1ae3a5bba5979b40f0c00a467e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162261
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <jl...@mail.com>
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx
index 5699ecbe7953..084863c144f4 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx
@@ -973,8 +973,10 @@ 
DECLARE_OOXMLEXPORT_TEST(testTdf159158_zOrder_zIndexDuplicate_compat15, "tdf1591
     CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(zOrder0, 
"ZOrder")); // lower
     CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getProperty<sal_Int32>(zOrder1, 
"ZOrder")); // higher
     // should be the same as relativeHeight - last duplicate wins so blue is 
on top.
-    // CPPUNIT_ASSERT_EQUAL(OUString("5-Point Star Yellow"), 
getProperty<OUString>(zOrder0, "Name"));
-    // CPPUNIT_ASSERT_EQUAL(OUString("5-Point Star Blue"), 
getProperty<OUString>(zOrder1,"Name"));
+    if (!isExported()) //somehow the name is lost on this export
+        CPPUNIT_ASSERT_EQUAL(OUString("5-Point Star Yellow"), 
getProperty<OUString>(zOrder0, "Name"));
+    if (!isExported()) //somehow the name is lost on this export
+        CPPUNIT_ASSERT_EQUAL(OUString("5-Point Star Blue"), 
getProperty<OUString>(zOrder1,"Name"));
 }
 
 DECLARE_OOXMLEXPORT_TEST(testTdf159158_zOrder_zIndexWins, 
"tdf159158_zOrder_zIndexWins.docx")
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 86065066403e..e92b5c9e76d6 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -4732,7 +4732,8 @@ void DomainMapper_Impl::PushShapeContext( const 
uno::Reference< drawing::XShape
                         GraphicZOrderHelper* pZOrderHelper = 
m_rDMapper.graphicZOrderHelper();
                         sal_Int32 zOrder(0);
                         rProp.Value >>= zOrder;
-                        xShapePropertySet->setPropertyValue( "ZOrder", 
uno::Any(pZOrderHelper->findZOrder(zOrder)));
+                        xShapePropertySet->setPropertyValue("ZOrder",
+                            uno::Any(pZOrderHelper->findZOrder(zOrder, 
/*LastDuplicateWins*/true)));
                         pZOrderHelper->addItem(xShapePropertySet, zOrder);
                         xShapePropertySet->setPropertyValue(getPropertyName( 
PROP_OPAQUE ), uno::Any( zOrder >= 0 ) );
                         checkZOrderStatus = true;
@@ -4776,7 +4777,8 @@ void DomainMapper_Impl::PushShapeContext( const 
uno::Reference< drawing::XShape
                         GraphicZOrderHelper* pZOrderHelper = 
m_rDMapper.graphicZOrderHelper();
                         sal_Int32 zOrder(0);
                         rProp.Value >>= zOrder;
-                        xShapePropertySet->setPropertyValue( "ZOrder", 
uno::Any(pZOrderHelper->findZOrder(zOrder)));
+                        xShapePropertySet->setPropertyValue("ZOrder",
+                            uno::Any(pZOrderHelper->findZOrder(zOrder, 
/*LastDuplicateWins*/true)));
                         pZOrderHelper->addItem(xShapePropertySet, zOrder);
                         xShapePropertySet->setPropertyValue(getPropertyName( 
PROP_OPAQUE ), uno::Any( zOrder >= 0 ) );
                         checkZOrderStatus = true;

Reply via email to