summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorLászló Németh <nemeth@numbertext.org>2022-11-24 13:28:34 +0100
committerLászló Németh <nemeth@numbertext.org>2022-11-24 16:57:54 +0100
commit386402ded6db4614c943c94f6e68bc1de1a38fe6 (patch)
tree9da0f097fe0ae245adb1f91cb1ebce6373c68886 /writerfilter
parent3f70375cf160841b6140f5f1b2b79af3652897f8 (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.cxx4
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx14
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx3
-rw-r--r--writerfilter/source/ooxml/model.xml2
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">