From 5120cc702741ee3bdded80336f33362e42bf4276 Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Wed, 17 Jan 2024 22:02:48 -0500 Subject: 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 Reviewed-by: Miklos Vajna --- writerfilter/source/dmapper/DomainMapper_Impl.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'writerfilter/source/dmapper/DomainMapper_Impl.cxx') 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; -- cgit v1.2.3