summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMichael Stahl <Michael.Stahl@cib.de>2018-09-21 15:51:02 +0200
committerMichael Stahl <Michael.Stahl@cib.de>2018-10-01 10:37:13 +0200
commit3dfa702ad8edff68ec70ac8d8cdad91c7e9157a9 (patch)
treee4a7fcf20bf1669fc87fa4b0cb7284d3eff2d257 /sw
parent0685975503fac7609e2d50c6584a75ac20259df5 (diff)
sw_redlinehide_2: avoid adjacent extents in UpdateMergedParaForDelete
It's more efficient to keep the vector small, and UpdateMergedParaForInsert() may even assert in this case, so merge the extents. Change-Id: I8ffe47f27f667b4030d62db8f0119e45bfd62767 Reviewed-on: https://gerrit.libreoffice.org/60931 Tested-by: Jenkins Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
Diffstat (limited to 'sw')
-rw-r--r--sw/source/core/text/txtfrm.cxx11
1 files changed, 10 insertions, 1 deletions
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index 9853beda6a09..fd9e02c5844e 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -855,7 +855,7 @@ TextFrameIndex UpdateMergedParaForDelete(MergedPara & rMerged,
if (it->pNode == &rNode)
{
++nFoundNode;
- if (nIndex + nToDelete <= it->nStart)
+ if (nIndex + nToDelete < it->nStart)
{
nToDelete = 0;
if (!isRealDelete)
@@ -891,6 +891,15 @@ TextFrameIndex UpdateMergedParaForDelete(MergedPara & rMerged,
{ // adjust for deleted text
it->nStart -= (nLen - nToDelete);
it->nEnd -= (nLen - nToDelete + nDeleteHere);
+ if (it != rMerged.extents.begin()
+ && (it-1)->pNode == &rNode
+ && (it-1)->nEnd == it->nStart)
+ { // merge adjacent extents
+ nTFIndex += it->nEnd - it->nStart;
+ (it-1)->nEnd = it->nEnd;
+ it = rMerged.extents.erase(it);
+ bErase = true; // skip increment
+ }
}
else
{ // exclude text marked as deleted