diff options
author | László Németh <nemeth@numbertext.org> | 2022-11-24 13:28:34 +0100 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2022-11-24 16:57:54 +0100 |
commit | 386402ded6db4614c943c94f6e68bc1de1a38fe6 (patch) | |
tree | 9da0f097fe0ae245adb1f91cb1ebce6373c68886 /writerfilter | |
parent | 3f70375cf160841b6140f5f1b2b79af3652897f8 (diff) |
tdf#151954 DOCX import: fix text moving before paragraph end
Tracked text moving before paragraph end was extended
to the paragraph end, too.
Follow-up to commit 11071d95f4f3cbe578c3393729c42b7cce011b45
"tdf#149711 sw_redlinenum DOCX: import moveTo paragraph mark"
and commit d32d9a2b3c5e3963f4a18f6c7bbf50fab2e9b2be
"tdf#123460 DOCX track changes: moveFrom completely".
Change-Id: I668a3ef83482bded9ab94dcd0111f8ed05e8471c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143231
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 14 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.hxx | 3 | ||||
-rw-r--r-- | writerfilter/source/ooxml/model.xml | 2 |
4 files changed, 22 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 3521f705fdf8..93cb36cb8e55 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2604,6 +2604,10 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) if (m_pImpl->hasTableManager()) m_pImpl->getTableManager().setMoved( OUString() ); break; + case NS_ooxml::LN_CT_ParaRPr_moveFrom: + case NS_ooxml::LN_CT_ParaRPr_moveTo: + m_pImpl->StartParaMarkerMove( ); + break; case NS_ooxml::LN_paratrackchange: m_pImpl->StartParaMarkerChange( ); [[fallthrough]]; diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index ec0861caa4e3..3e17187b40fa 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -359,6 +359,7 @@ DomainMapper_Impl::DomainMapper_Impl( m_bLineNumberingSet( false ), m_bIsInFootnoteProperties( false ), m_bIsParaMarkerChange( false ), + m_bIsParaMarkerMove( false ), m_bRedlineImageInPreviousRun( false ), m_bParaChanged( false ), m_bIsFirstParaInSection( true ), @@ -3439,7 +3440,7 @@ void DomainMapper_Impl::CheckParaMarkerRedline( uno::Reference< text::XTextRange m_currentRedline.clear(); } } - else if ( m_pParaMarkerRedlineMove ) + else if ( m_pParaMarkerRedlineMove && m_bIsParaMarkerMove ) { // terminating moveFrom/moveTo redline removes also the paragraph mark CreateRedline( xRange, m_pParaMarkerRedlineMove ); @@ -3447,6 +3448,7 @@ void DomainMapper_Impl::CheckParaMarkerRedline( uno::Reference< text::XTextRange if ( m_pParaMarkerRedlineMove ) { m_pParaMarkerRedlineMove.clear(); + EndParaMarkerMove(); } } @@ -3493,6 +3495,16 @@ void DomainMapper_Impl::EndParaMarkerChange( ) m_currentRedline.clear(); } +void DomainMapper_Impl::StartParaMarkerMove( ) +{ + m_bIsParaMarkerMove = true; +} + +void DomainMapper_Impl::EndParaMarkerMove( ) +{ + m_bIsParaMarkerMove = false; +} + void DomainMapper_Impl::StartCustomFootnote(const PropertyMapPtr pContext) { if (pContext == m_pFootnoteContext) diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 32a657ce16d0..247c40fae621 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -577,6 +577,7 @@ private: RedlineParamsPtr m_previousRedline; RedlineParamsPtr m_pParaMarkerRedline; bool m_bIsParaMarkerChange; + bool m_bIsParaMarkerMove; // redline data of the terminating run, if it's a moveFrom deletion or a moveTo insertion RedlineParamsPtr m_pParaMarkerRedlineMove; // This is for removing workaround (double ZWSPs around the anchoring point) for track @@ -680,6 +681,8 @@ public: void StartParaMarkerChange( ); void EndParaMarkerChange( ); + void StartParaMarkerMove( ); + void EndParaMarkerMove( ); void ChainTextFrames(); void PushTextBoxContent(); diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index bff00b41a925..134726d644af 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -18191,6 +18191,8 @@ <resource name="CT_ParaRPr" resource="Properties"> <element name="ins" tokenid="ooxml:CT_ParaRPr_ins"/> <element name="del" tokenid="ooxml:CT_ParaRPr_del"/> + <element name="moveFrom" tokenid="ooxml:CT_ParaRPr_moveFrom"/> + <element name="moveTo" tokenid="ooxml:CT_ParaRPr_moveTo"/> <element name="rPrChange" tokenid="ooxml:CT_ParaRPr_rPrChange"/> </resource> <resource name="CT_ParaTrackChange" resource="Properties"> |