diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-03-07 23:12:44 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-03-07 23:37:03 +0100 |
commit | 9b3fa51e7ba4e2bfe9806295c3cbc8db347480d8 (patch) | |
tree | 211ba35dcc36da98dac9aaba9c248c06a183bb6f /sw | |
parent | e1e2defb2cd9b572747b964e5ec97d289029af8c (diff) |
tdf#106218 sw: compare document: tweak special handling of EndOfContent
In case the last paragraph in the document is inserted or deleted, the
redline must not be positioned on the EndOfContent node (i#101009).
But then rejecting the redline will have an additional paragraph as
compared to the original document. Try to avoid that by tweaking the
start position of the redline to the end of the previous paragraph.
(regression from f4609c4c294a62023b6cd6baeb6a73d44992dec3)
Change-Id: Iae75042a3124d0f3bca955fb856c94a6f478b986
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/doc/doccomp.cxx | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index 74d4452d7712..09bd3d0fd7ef 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -1680,6 +1680,17 @@ void CompareData::SetRedlinesToDoc( bool bUseDocInfo ) SwContentNode *const pContentNode( pTmp->GetContentNode() ); pTmp->GetPoint()->nContent.Assign( pContentNode, (pContentNode) ? pContentNode->Len() : 0 ); + // tdf#106218 try to avoid losing a paragraph break here: + if (pTmp->GetMark()->nContent == 0) + { + SwNodeIndex const prev(pTmp->GetMark()->nNode, -1); + if (prev.GetNode().IsTextNode()) + { + *pTmp->GetMark() = SwPosition( + *prev.GetNode().GetTextNode(), + prev.GetNode().GetTextNode()->Len()); + } + } } rDoc.getIDocumentRedlineAccess().DeleteRedline( *pTmp, false, USHRT_MAX ); @@ -1712,6 +1723,17 @@ void CompareData::SetRedlinesToDoc( bool bUseDocInfo ) SwContentNode *const pContentNode( pTmp->GetContentNode() ); pTmp->GetPoint()->nContent.Assign( pContentNode, (pContentNode) ? pContentNode->Len() : 0 ); + // tdf#106218 try to avoid losing a paragraph break here: + if (pTmp->GetMark()->nContent == 0) + { + SwNodeIndex const prev(pTmp->GetMark()->nNode, -1); + if (prev.GetNode().IsTextNode()) + { + *pTmp->GetMark() = SwPosition( + *prev.GetNode().GetTextNode(), + prev.GetNode().GetTextNode()->Len()); + } + } } } while( pInsRing != ( pTmp = pTmp->GetNext()) ); SwRedlineData aRedlnData( nsRedlineType_t::REDLINE_INSERT, nAuthor, aTimeStamp, |