writerfilter/inc/dmapper/GraphicZOrderHelper.hxx |    1 -
 writerfilter/source/dmapper/GraphicImport.cxx    |   15 +++++----------
 2 files changed, 5 insertions(+), 11 deletions(-)

New commits:
commit d26fe92554273f7d8299f799681075d8a44a917a
Author:     Justin Luth <justin.l...@collabora.com>
AuthorDate: Sat Jan 13 19:35:29 2024 -0500
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Tue Jan 16 09:12:00 2024 +0100

    tdf#159158 writerfilter: duplicate relativeHeights? last one wins #2
    
    Revert the previous solution and replace it with this simpler one.
    
    This version of the patch is riskier, but from what I can see
    last one always wins for GraphicImport.
    I assume that Miklos just limited it to a certain situation
    as a sanity check to try to avoid causing regressions
    outside of the scope he was working on.
    
    The fact that all DOCX and RTF unit tests pass is a good sign.
    
    The only way I would expect this to cause problems is
    if z-index somehow can come into play with a GraphicImport
    (since both z-index and relativeHeight feed into zOrder).
    However, an assert didn't turn up any instances where
    applyZOrder was called without a relativeHeight being set.
    assert(m_rDomainMapper.IsRTFImport() || bOldStyle || UsedRelativeHeight);
    
    Change-Id: I28e8acd5997eed0e82d5853c85b672c62b21afe5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162036
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/writerfilter/inc/dmapper/GraphicZOrderHelper.hxx 
b/writerfilter/inc/dmapper/GraphicZOrderHelper.hxx
index 2ad71c411420..c6a308ddf819 100644
--- a/writerfilter/inc/dmapper/GraphicZOrderHelper.hxx
+++ b/writerfilter/inc/dmapper/GraphicZOrderHelper.hxx
@@ -19,7 +19,6 @@ public:
     void addItem(css::uno::Reference<css::beans::XPropertySet> const& props,
                  sal_Int32 relativeHeight);
     sal_Int32 findZOrder(sal_Int32 relativeHeight, bool bOldStyle = false);
-    bool hasZOrder(sal_Int32 relativeHeight) { return 
m_items.count(relativeHeight) != 0; }
 
 private:
     using Items = std::map<sal_Int32, 
css::uno::Reference<css::beans::XPropertySet>>;
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx 
b/writerfilter/source/dmapper/GraphicImport.cxx
index 6fbc1728eb26..45d046288e81 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -396,10 +396,13 @@ public:
             // tdf#120760 Send objects with behinddoc=true to the back.
             if (m_bBehindDoc && m_rDomainMapper.IsInHeaderFooter())
                 nZOrder -= SAL_MAX_INT32;
+
+            // TODO: it is possible that RTF has been wrong all along as well. 
Always true here?
+            const bool bLastDuplicateWins(!m_rDomainMapper.IsRTFImport()
+                || m_rGraphicImportType == 
GraphicImportType::IMPORT_AS_DETECTED_INLINE);
             GraphicZOrderHelper* pZOrderHelper = 
m_rDomainMapper.graphicZOrderHelper();
-            bool const bOldStyle(m_rGraphicImportType == 
GraphicImportType::IMPORT_AS_DETECTED_INLINE);
             
xGraphicObjectProperties->setPropertyValue(getPropertyName(PROP_Z_ORDER),
-                uno::Any(pZOrderHelper->findZOrder(nZOrder, bOldStyle)));
+                uno::Any(pZOrderHelper->findZOrder(nZOrder, 
bLastDuplicateWins)));
             pZOrderHelper->addItem(xGraphicObjectProperties, nZOrder);
         }
     }
@@ -737,14 +740,6 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
         case NS_ooxml::LN_CT_Anchor_relativeHeight:
         {
             m_pImpl->m_zOrder = nIntValue;
-
-            // Last one defined must win - opposite to what the existing code 
(for z-Index?) does.
-            GraphicZOrderHelper* pZOrderHelper = 
m_pImpl->m_rDomainMapper.graphicZOrderHelper();
-            if (pZOrderHelper->hasZOrder(m_pImpl->m_zOrder)
-                && m_pImpl->m_rGraphicImportType != 
GraphicImportType::IMPORT_AS_DETECTED_INLINE)
-            {
-                ++m_pImpl->m_zOrder;
-            }
         }
         break;
         case NS_ooxml::LN_CT_Anchor_behindDoc:

Reply via email to