[Libreoffice-commits] core.git: sw/source

Michael Stahl (via logerrit) logerrit at kemper.freedesktop.org
Mon Jul 13 09:25:20 UTC 2020


 sw/source/filter/ww8/docxattributeoutput.cxx |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

New commits:
commit 7b156d37cfc92292323694ec064fe51ae57b3257
Author:     Michael Stahl <Michael.Stahl at cib.de>
AuthorDate: Fri Jul 10 19:29:27 2020 +0200
Commit:     Michael Stahl <michael.stahl at cib.de>
CommitDate: Mon Jul 13 11:24:29 2020 +0200

    tdf#134618 sw: DOCX export: fix order of as-char and at-char fly...
    
    ...at same position.
    
    The problem is that in this case the as-char fly was written before the
    at-char fly but the positioning of the at-char fly can be relative to
    its character position, i.e. before the as-char fly.
    
    Apparently as-char flys are written in
    DocxAttributeOutput::EndRunProperties() via WritePostponedDMLDrawing(),
    wheras at-char flys are written earlier, in SwWW8AttrIter::OutFlys() via
    DocxAttributeOutput::OutputFlyFrame_Impl().
    
    So this undoes the swap that these undergo via the magic of the mark
    stack.
    
    Change-Id: I83a72bb2affbf321fc4dea4e7fb37bdb43cea2e7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98543
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.stahl at cib.de>

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 76d067390cf1..5090d63fad71 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -2673,6 +2673,10 @@ void DocxAttributeOutput::EndRunProperties( const SwRedlineData* pRedlineData )
     // write footnotes/endnotes if we have any
     FootnoteEndnoteReference();
 
+    // merge the properties _before_ the run text (strictly speaking, just
+    // after the start of the run)
+    m_pSerializer->mergeTopMarks(Tag_StartRunProperties, sax_fastparser::MergeMarks::PREPEND);
+
     WritePostponedGraphic();
 
     WritePostponedDiagram();
@@ -2685,10 +2689,6 @@ void DocxAttributeOutput::EndRunProperties( const SwRedlineData* pRedlineData )
     WritePostponedOLE();
 
     WritePostponedActiveXControl(true);
-
-    // merge the properties _before_ the run text (strictly speaking, just
-    // after the start of the run)
-    m_pSerializer->mergeTopMarks(Tag_StartRunProperties, sax_fastparser::MergeMarks::PREPEND);
 }
 
 void DocxAttributeOutput::GetSdtEndBefore(const SdrObject* pSdrObj)
@@ -5844,7 +5844,7 @@ void DocxAttributeOutput::OutputFlyFrame_Impl( const ww8::Frame &rFrame, const P
             break;
     }
 
-    m_pSerializer->mergeTopMarks(Tag_OutputFlyFrame, sax_fastparser::MergeMarks::POSTPONE);
+    m_pSerializer->mergeTopMarks(Tag_OutputFlyFrame);
 }
 
 void DocxAttributeOutput::WriteOutliner(const OutlinerParaObject& rParaObj)


More information about the Libreoffice-commits mailing list