summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <Michael.Stahl@cib.de>2020-07-10 19:29:27 +0200
committerGabor Kelemen <kelemen.gabor2@nisz.hu>2020-09-13 23:35:54 +0200
commit1f6bb28c988c9b03e78180c30ca8fb25d18b593b (patch)
tree2bc90d9e6a6112aac546d2750b21c0f542f4f2c5
parent4a00fa7032acc6e1c9780a28ab808cc690190647 (diff)
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@cib.de> (cherry picked from commit 7b156d37cfc92292323694ec064fe51ae57b3257) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98633 Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> (cherry picked from commit d449d92b8f1b8c6b572acfd80efe42a875059faf) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102571 Tested-by: Gabor Kelemen <kelemen.gabor2@nisz.hu> Reviewed-by: Gabor Kelemen <kelemen.gabor2@nisz.hu>
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx10
1 files changed, 5 insertions, 5 deletions
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 825189c8ccd6..bc01bc3d5c6f 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -2668,6 +2668,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();
@@ -2680,10 +2684,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)
@@ -5793,7 +5793,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)