diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2020-07-10 19:29:27 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@cib.de> | 2020-07-13 11:24:29 +0200 |
commit | 7b156d37cfc92292323694ec064fe51ae57b3257 (patch) | |
tree | e5b6aaf8eca5ef1cc31d3baf5d1f5003b404a31c | |
parent | 4e0aa38afd674f5ad16b4bc3222dc393543ad915 (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>
-rw-r--r-- | sw/source/filter/ww8/docxattributeoutput.cxx | 10 |
1 files changed, 5 insertions, 5 deletions
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) |