|
 |
ebc4bd |
From f3974a01283674f016ebd564652964302b1ab1e8 Mon Sep 17 00:00:00 2001
|
|
 |
ebc4bd |
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
 |
ebc4bd |
Date: Fri, 30 Jan 2015 15:34:30 +0000
|
|
 |
ebc4bd |
Subject: [PATCH] During DocumentRedlineManager::SetRedlineMode the array
|
|
 |
ebc4bd |
becomes unsorted
|
|
 |
ebc4bd |
MIME-Version: 1.0
|
|
 |
ebc4bd |
Content-Type: text/plain; charset=UTF-8
|
|
 |
ebc4bd |
Content-Transfer-Encoding: 8bit
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
so GetPos cannot be used safely, so pass down the known index
|
|
 |
ebc4bd |
of the redline and propogate it everywhere the redline goes
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
This reverts
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
commit 36e158ce7a0effb130936ba4598a193102faa6a1
|
|
 |
ebc4bd |
Author: Caolán McNamara <caolanm@redhat.com>
|
|
 |
ebc4bd |
Date: Mon Jan 19 12:09:17 2015 +0000
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
if we change the keys we have to resort based on the new keys
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
which tried to keep the table sorted, but thats no use because
|
|
 |
ebc4bd |
DocumentRedlineManager::SetRedlineMode loops over by index
|
|
 |
ebc4bd |
so sorting the table during the process busts that.
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
Taking a copy of the entries and looping over that shows another
|
|
 |
ebc4bd |
gadzillion problems.
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
So try this approach instead.
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
I imagine it should be possible to calculate the correct
|
|
 |
ebc4bd |
current index of pRedl in DocumentRedlineManager::AppendRedline
|
|
 |
ebc4bd |
but for now assume that we are sorted correctly at that
|
|
 |
ebc4bd |
point and can use GetPos
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
(cherry picked from commit a5a20187c3a5e5956492f932c49501f9547e4915)
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
Conflicts:
|
|
 |
ebc4bd |
sw/source/core/doc/DocumentRedlineManager.cxx
|
|
 |
ebc4bd |
sw/source/core/doc/docredln.cxx
|
|
 |
ebc4bd |
sw/source/core/undo/unredln.cxx
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
Change-Id: If092dce185e3b36fd256db390132358cba155847
|
|
 |
ebc4bd |
---
|
|
 |
ebc4bd |
sw/inc/docary.hxx | 1 +
|
|
 |
ebc4bd |
sw/inc/redline.hxx | 12 +++---
|
|
 |
ebc4bd |
sw/source/core/doc/docredln.cxx | 90 ++++++++++++++++++++---------------------
|
|
 |
ebc4bd |
sw/source/core/undo/unredln.cxx | 2 +-
|
|
 |
ebc4bd |
4 files changed, 51 insertions(+), 54 deletions(-)
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
|
|
 |
ebc4bd |
index 94f8229..34f22ed 100644
|
|
 |
ebc4bd |
--- a/sw/inc/docary.hxx
|
|
 |
ebc4bd |
+++ b/sw/inc/docary.hxx
|
|
 |
ebc4bd |
@@ -195,6 +195,7 @@ public:
|
|
 |
ebc4bd |
using _SwRedlineTbl::size;
|
|
 |
ebc4bd |
using _SwRedlineTbl::operator[];
|
|
 |
ebc4bd |
using _SwRedlineTbl::empty;
|
|
 |
ebc4bd |
+ using _SwRedlineTbl::Resort;
|
|
 |
ebc4bd |
};
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
/// Table that holds 'extra' redlines, such as 'table row insert\delete', 'paragraph moves' etc...
|
|
 |
ebc4bd |
diff --git a/sw/inc/redline.hxx b/sw/inc/redline.hxx
|
|
 |
ebc4bd |
index ab1945b..b639063 100644
|
|
 |
ebc4bd |
--- a/sw/inc/redline.hxx
|
|
 |
ebc4bd |
+++ b/sw/inc/redline.hxx
|
|
 |
ebc4bd |
@@ -190,8 +190,8 @@ class SW_DLLPUBLIC SwRangeRedline : public SwPaM
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
void MoveToSection();
|
|
 |
ebc4bd |
void CopyToSection();
|
|
 |
ebc4bd |
- void DelCopyOfSection();
|
|
 |
ebc4bd |
- void MoveFromSection();
|
|
 |
ebc4bd |
+ void DelCopyOfSection(size_t nMyPos);
|
|
 |
ebc4bd |
+ void MoveFromSection(size_t nMyPos);
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
public:
|
|
 |
ebc4bd |
SwRangeRedline( RedlineType_t eType, const SwPaM& rPam );
|
|
 |
ebc4bd |
@@ -263,10 +263,10 @@ public:
|
|
 |
ebc4bd |
// hide the Del-Redlines via Copy and Delete.
|
|
 |
ebc4bd |
// Otherwise at Move the attribution would be handled incorrectly.
|
|
 |
ebc4bd |
// All other callers must always give 0.
|
|
 |
ebc4bd |
- void CallDisplayFunc( sal_uInt16 nLoop = 0 );
|
|
 |
ebc4bd |
- void Show( sal_uInt16 nLoop = 0 );
|
|
 |
ebc4bd |
- void Hide( sal_uInt16 nLoop = 0 );
|
|
 |
ebc4bd |
- void ShowOriginal( sal_uInt16 nLoop = 0 );
|
|
 |
ebc4bd |
+ void CallDisplayFunc(sal_uInt16 nLoop, size_t nMyPos);
|
|
 |
ebc4bd |
+ void Show(sal_uInt16 nLoop , size_t nMyPos);
|
|
 |
ebc4bd |
+ void Hide(sal_uInt16 nLoop , size_t nMyPos);
|
|
 |
ebc4bd |
+ void ShowOriginal(sal_uInt16 nLoop, size_t nMyPos);
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
/// Calculates the intersection with text node number nNdIdx.
|
|
 |
ebc4bd |
void CalcStartEnd(sal_uLong nNdIdx, sal_Int32& rStart, sal_Int32& rEnd) const;
|
|
 |
ebc4bd |
diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx
|
|
 |
ebc4bd |
index 8d3d704..fd2730e 100644
|
|
 |
ebc4bd |
--- a/sw/source/core/doc/docredln.cxx
|
|
 |
ebc4bd |
+++ b/sw/source/core/doc/docredln.cxx
|
|
 |
ebc4bd |
@@ -157,7 +157,7 @@ void SwDoc::SetRedlineMode( RedlineMode_t eMode )
|
|
 |
ebc4bd |
bool bSaveInXMLImportFlag = IsInXMLImport();
|
|
 |
ebc4bd |
SetInXMLImport( false );
|
|
 |
ebc4bd |
// and then hide/display everything
|
|
 |
ebc4bd |
- void (SwRangeRedline::*pFnc)( sal_uInt16 ) = 0;
|
|
 |
ebc4bd |
+ void (SwRangeRedline::*pFnc)(sal_uInt16, size_t) = 0;
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
switch( nsRedlineMode_t::REDLINE_SHOW_MASK & eMode )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
@@ -179,10 +179,17 @@ void SwDoc::SetRedlineMode( RedlineMode_t eMode )
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
_CHECK_REDLINE( this )
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
- if( pFnc )
|
|
 |
ebc4bd |
- for( sal_uInt16 nLoop = 1; nLoop <= 2; ++nLoop )
|
|
 |
ebc4bd |
- for( sal_uInt16 i = 0; i < mpRedlineTbl->size(); ++i )
|
|
 |
ebc4bd |
- ((*mpRedlineTbl)[ i ]->*pFnc)( nLoop );
|
|
 |
ebc4bd |
+ if (pFnc)
|
|
 |
ebc4bd |
+ {
|
|
 |
ebc4bd |
+ for (sal_uInt16 nLoop = 1; nLoop <= 2; ++nLoop)
|
|
 |
ebc4bd |
+ for (size_t i = 0; i < mpRedlineTbl->size(); ++i)
|
|
 |
ebc4bd |
+ ((*mpRedlineTbl)[i]->*pFnc)(nLoop, i);
|
|
 |
ebc4bd |
+
|
|
 |
ebc4bd |
+ //SwRangeRedline::MoveFromSection routinely changes
|
|
 |
ebc4bd |
+ //the keys that mpRedlineTbl is sorted by
|
|
 |
ebc4bd |
+ mpRedlineTbl->Resort();
|
|
 |
ebc4bd |
+ }
|
|
 |
ebc4bd |
+
|
|
 |
ebc4bd |
_CHECK_REDLINE( this )
|
|
 |
ebc4bd |
SetInXMLImport( bSaveInXMLImportFlag );
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
@@ -705,7 +712,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
|
|
 |
ebc4bd |
// We insert temporarily so that pNew is
|
|
 |
ebc4bd |
// also dealt with when moving the indices.
|
|
 |
ebc4bd |
mpRedlineTbl->Insert( pNewRedl );
|
|
 |
ebc4bd |
- pRedl->Show();
|
|
 |
ebc4bd |
+ pRedl->Show(0, mpRedlineTbl->GetPos(pRedl));
|
|
 |
ebc4bd |
mpRedlineTbl->Remove( pNewRedl );
|
|
 |
ebc4bd |
pRStt = pRedl->Start();
|
|
 |
ebc4bd |
pREnd = pRedl->End();
|
|
 |
ebc4bd |
@@ -882,7 +889,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
|
|
 |
ebc4bd |
pRedl->PushData( *pNewRedl );
|
|
 |
ebc4bd |
delete pNewRedl, pNewRedl = 0;
|
|
 |
ebc4bd |
if( IsHideChanges( meRedlineMode ))
|
|
 |
ebc4bd |
- pRedl->Hide();
|
|
 |
ebc4bd |
+ pRedl->Hide(0, mpRedlineTbl->GetPos(pRedl));
|
|
 |
ebc4bd |
bCompress = true;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
@@ -946,7 +953,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
|
|
 |
ebc4bd |
if( IsHideChanges( meRedlineMode ))
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
mpRedlineTbl->Insert( pNewRedl );
|
|
 |
ebc4bd |
- pRedl->Hide();
|
|
 |
ebc4bd |
+ pRedl->Hide(0, mpRedlineTbl->GetPos(pRedl));
|
|
 |
ebc4bd |
mpRedlineTbl->Remove( pNewRedl );
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
@@ -974,7 +981,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
|
|
 |
ebc4bd |
if( IsHideChanges( meRedlineMode ))
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
mpRedlineTbl->Insert( pNewRedl );
|
|
 |
ebc4bd |
- pRedl->Hide();
|
|
 |
ebc4bd |
+ pRedl->Hide(0, mpRedlineTbl->GetPos(pRedl));
|
|
 |
ebc4bd |
mpRedlineTbl->Remove( pNewRedl );
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
@@ -1255,7 +1262,7 @@ void SwDoc::CompressRedlines()
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
_CHECK_REDLINE( this )
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
- void (SwRangeRedline::*pFnc)(sal_uInt16) = 0;
|
|
 |
ebc4bd |
+ void (SwRangeRedline::*pFnc)(sal_uInt16, size_t) = 0;
|
|
 |
ebc4bd |
switch( nsRedlineMode_t::REDLINE_SHOW_MASK & meRedlineMode )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
case nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE:
|
|
 |
ebc4bd |
@@ -1283,14 +1290,15 @@ void SwDoc::CompressRedlines()
|
|
 |
ebc4bd |
!pCurEnd->nNode.GetNode().StartOfSectionNode()->IsTableNode() )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
// we then can merge them
|
|
 |
ebc4bd |
- pPrev->Show();
|
|
 |
ebc4bd |
- pCur->Show();
|
|
 |
ebc4bd |
+ size_t nPrevIndex = n-1;
|
|
 |
ebc4bd |
+ pPrev->Show(0, nPrevIndex);
|
|
 |
ebc4bd |
+ pCur->Show(0, n);
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
pPrev->SetEnd( *pCur->End() );
|
|
 |
ebc4bd |
mpRedlineTbl->DeleteAndDestroy( n );
|
|
 |
ebc4bd |
--n;
|
|
 |
ebc4bd |
if( pFnc )
|
|
 |
ebc4bd |
- (pPrev->*pFnc)(0);
|
|
 |
ebc4bd |
+ (pPrev->*pFnc)(0, nPrevIndex);
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
_CHECK_REDLINE( this )
|
|
 |
ebc4bd |
@@ -2751,8 +2759,10 @@ bool SwRedlineTbl::Insert( SwRangeRedline* p, bool bIns )
|
|
 |
ebc4bd |
bool bRet = false;
|
|
 |
ebc4bd |
if( p->HasValidRange() )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
- bRet = insert( p ).second;
|
|
 |
ebc4bd |
- p->CallDisplayFunc();
|
|
 |
ebc4bd |
+ std::pair<_SwRedlineTbl::const_iterator, bool> rv = insert( p );
|
|
 |
ebc4bd |
+ size_t nP = rv.first - begin();
|
|
 |
ebc4bd |
+ bRet = rv.second;
|
|
 |
ebc4bd |
+ p->CallDisplayFunc(0, nP);
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
else if( bIns )
|
|
 |
ebc4bd |
bRet = InsertWithValidRanges( p );
|
|
 |
ebc4bd |
@@ -2771,7 +2781,7 @@ bool SwRedlineTbl::Insert( SwRangeRedline* p, sal_uInt16& rP, bool bIns )
|
|
 |
ebc4bd |
std::pair<_SwRedlineTbl::const_iterator, bool> rv = insert( p );
|
|
 |
ebc4bd |
rP = rv.first - begin();
|
|
 |
ebc4bd |
bRet = rv.second;
|
|
 |
ebc4bd |
- p->CallDisplayFunc();
|
|
 |
ebc4bd |
+ p->CallDisplayFunc(0, rP);
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
else if( bIns )
|
|
 |
ebc4bd |
bRet = InsertWithValidRanges( p, &rP );
|
|
 |
ebc4bd |
@@ -2873,7 +2883,7 @@ bool SwRedlineTbl::InsertWithValidRanges( SwRangeRedline* p, sal_uInt16* pInsPos
|
|
 |
ebc4bd |
pNew->HasValidRange() &&
|
|
 |
ebc4bd |
Insert( pNew, nInsPos ) )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
- pNew->CallDisplayFunc();
|
|
 |
ebc4bd |
+ pNew->CallDisplayFunc(0, nInsPos);
|
|
 |
ebc4bd |
bAnyIns = true;
|
|
 |
ebc4bd |
pNew = 0;
|
|
 |
ebc4bd |
if( pInsPos && *pInsPos < nInsPos )
|
|
 |
ebc4bd |
@@ -3382,23 +3392,23 @@ bool SwRangeRedline::HasValidRange() const
|
|
 |
ebc4bd |
return false;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
-void SwRangeRedline::CallDisplayFunc( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
+void SwRangeRedline::CallDisplayFunc(sal_uInt16 nLoop, size_t nMyPos)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
switch( nsRedlineMode_t::REDLINE_SHOW_MASK & GetDoc()->GetRedlineMode() )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
case nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE:
|
|
 |
ebc4bd |
- Show( nLoop );
|
|
 |
ebc4bd |
+ Show(nLoop, nMyPos);
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
case nsRedlineMode_t::REDLINE_SHOW_INSERT:
|
|
 |
ebc4bd |
- Hide( nLoop );
|
|
 |
ebc4bd |
+ Hide(nLoop, nMyPos);
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
case nsRedlineMode_t::REDLINE_SHOW_DELETE:
|
|
 |
ebc4bd |
- ShowOriginal( nLoop );
|
|
 |
ebc4bd |
+ ShowOriginal(nLoop, nMyPos);
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
-void SwRangeRedline::Show( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
+void SwRangeRedline::Show(sal_uInt16 nLoop, size_t nMyPos)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
if( 1 <= nLoop )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
@@ -3411,12 +3421,12 @@ void SwRangeRedline::Show( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
case nsRedlineType_t::REDLINE_INSERT: // Content has been inserted
|
|
 |
ebc4bd |
bIsVisible = true;
|
|
 |
ebc4bd |
- MoveFromSection();
|
|
 |
ebc4bd |
+ MoveFromSection(nMyPos);
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
case nsRedlineType_t::REDLINE_DELETE: // Content has been deleted
|
|
 |
ebc4bd |
bIsVisible = true;
|
|
 |
ebc4bd |
- MoveFromSection();
|
|
 |
ebc4bd |
+ MoveFromSection(nMyPos);
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
case nsRedlineType_t::REDLINE_FORMAT: // Attributes have been applied
|
|
 |
ebc4bd |
@@ -3430,7 +3440,7 @@ void SwRangeRedline::Show( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
-void SwRangeRedline::Hide( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
+void SwRangeRedline::Hide(sal_uInt16 nLoop, size_t nMyPos)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
SwDoc* pDoc = GetDoc();
|
|
 |
ebc4bd |
RedlineMode_t eOld = pDoc->GetRedlineMode();
|
|
 |
ebc4bd |
@@ -3442,7 +3452,7 @@ void SwRangeRedline::Hide( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
case nsRedlineType_t::REDLINE_INSERT: // Content has been inserted
|
|
 |
ebc4bd |
bIsVisible = true;
|
|
 |
ebc4bd |
if( 1 <= nLoop )
|
|
 |
ebc4bd |
- MoveFromSection();
|
|
 |
ebc4bd |
+ MoveFromSection(nMyPos);
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
case nsRedlineType_t::REDLINE_DELETE: // Content has been deleted
|
|
 |
ebc4bd |
@@ -3451,7 +3461,7 @@ void SwRangeRedline::Hide( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
case 0: MoveToSection(); break;
|
|
 |
ebc4bd |
case 1: CopyToSection(); break;
|
|
 |
ebc4bd |
- case 2: DelCopyOfSection(); break;
|
|
 |
ebc4bd |
+ case 2: DelCopyOfSection(nMyPos); break;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
@@ -3466,7 +3476,7 @@ void SwRangeRedline::Hide( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
pDoc->SetRedlineMode_intern( eOld );
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
-void SwRangeRedline::ShowOriginal( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
+void SwRangeRedline::ShowOriginal(sal_uInt16 nLoop, size_t nMyPos)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
SwDoc* pDoc = GetDoc();
|
|
 |
ebc4bd |
RedlineMode_t eOld = pDoc->GetRedlineMode();
|
|
 |
ebc4bd |
@@ -3487,14 +3497,14 @@ void SwRangeRedline::ShowOriginal( sal_uInt16 nLoop )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
case 0: MoveToSection(); break;
|
|
 |
ebc4bd |
case 1: CopyToSection(); break;
|
|
 |
ebc4bd |
- case 2: DelCopyOfSection(); break;
|
|
 |
ebc4bd |
+ case 2: DelCopyOfSection(nMyPos); break;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
case nsRedlineType_t::REDLINE_DELETE: // Inhalt wurde eingefuegt
|
|
 |
ebc4bd |
bIsVisible = true;
|
|
 |
ebc4bd |
if( 1 <= nLoop )
|
|
 |
ebc4bd |
- MoveFromSection();
|
|
 |
ebc4bd |
+ MoveFromSection(nMyPos);
|
|
 |
ebc4bd |
break;
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
case nsRedlineType_t::REDLINE_FORMAT: // Attributes have been applied
|
|
 |
ebc4bd |
@@ -3725,7 +3735,7 @@ void SwRangeRedline::CopyToSection()
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
-void SwRangeRedline::DelCopyOfSection()
|
|
 |
ebc4bd |
+void SwRangeRedline::DelCopyOfSection(size_t nMyPos)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
if( pCntntSect )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
@@ -3772,7 +3782,7 @@ void SwRangeRedline::DelCopyOfSection()
|
|
 |
ebc4bd |
// bDelLastPara condition above), only redlines before the
|
|
 |
ebc4bd |
// current ones can be affected.
|
|
 |
ebc4bd |
const SwRedlineTbl& rTbl = pDoc->GetRedlineTbl();
|
|
 |
ebc4bd |
- sal_uInt16 n = rTbl.GetPos( this );
|
|
 |
ebc4bd |
+ sal_uInt16 n = nMyPos;
|
|
 |
ebc4bd |
OSL_ENSURE( n != USHRT_MAX, "How strange. We don't exist!" );
|
|
 |
ebc4bd |
for( bool bBreak = false; !bBreak && n > 0; )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
@@ -3813,16 +3823,13 @@ void SwRangeRedline::DelCopyOfSection()
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
-void SwRangeRedline::MoveFromSection()
|
|
 |
ebc4bd |
+void SwRangeRedline::MoveFromSection(size_t nMyPos)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
if( pCntntSect )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
SwDoc* pDoc = GetDoc();
|
|
 |
ebc4bd |
const SwRedlineTbl& rTbl = pDoc->GetRedlineTbl();
|
|
 |
ebc4bd |
std::vector<SwPosition*> aBeforeArr, aBehindArr;
|
|
 |
ebc4bd |
- typedef std::map<sal_uInt16, SwRangeRedline*> IndexAndRange;
|
|
 |
ebc4bd |
- IndexAndRange aIndexAndRangeMap;
|
|
 |
ebc4bd |
- sal_uInt16 nMyPos = rTbl.GetPos( this );
|
|
 |
ebc4bd |
OSL_ENSURE( this, "this is not in the array?" );
|
|
 |
ebc4bd |
bool bBreak = false;
|
|
 |
ebc4bd |
sal_uInt16 n;
|
|
 |
ebc4bd |
@@ -3834,14 +3841,12 @@ void SwRangeRedline::MoveFromSection()
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
SwRangeRedline* pRedl = rTbl[n];
|
|
 |
ebc4bd |
aBehindArr.push_back(&pRedl->GetBound(true));
|
|
 |
ebc4bd |
- aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
|
|
 |
ebc4bd |
bBreak = false;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
if( rTbl[ n ]->GetBound(false) == *GetPoint() )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
SwRangeRedline* pRedl = rTbl[n];
|
|
 |
ebc4bd |
aBehindArr.push_back(&pRedl->GetBound(false));
|
|
 |
ebc4bd |
- aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
|
|
 |
ebc4bd |
bBreak = false;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
@@ -3853,14 +3858,12 @@ void SwRangeRedline::MoveFromSection()
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
SwRangeRedline* pRedl = rTbl[n];
|
|
 |
ebc4bd |
aBeforeArr.push_back(&pRedl->GetBound(true));
|
|
 |
ebc4bd |
- aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
|
|
 |
ebc4bd |
bBreak = false;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
if( rTbl[ n ]->GetBound(false) == *GetPoint() )
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
SwRangeRedline* pRedl = rTbl[n];
|
|
 |
ebc4bd |
aBeforeArr.push_back(&pRedl->GetBound(false));
|
|
 |
ebc4bd |
- aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
|
|
 |
ebc4bd |
bBreak = false;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
@@ -3935,13 +3938,6 @@ void SwRangeRedline::MoveFromSection()
|
|
 |
ebc4bd |
*aBeforeArr[ n ] = *Start();
|
|
 |
ebc4bd |
for( n = 0; n < aBehindArr.size(); ++n )
|
|
 |
ebc4bd |
*aBehindArr[ n ] = *End();
|
|
 |
ebc4bd |
- SwRedlineTbl& rResortTbl = const_cast<SwRedlineTbl&>(rTbl);
|
|
 |
ebc4bd |
- for (auto& a : aIndexAndRangeMap)
|
|
 |
ebc4bd |
- {
|
|
 |
ebc4bd |
- // re-insert
|
|
 |
ebc4bd |
- rResortTbl.Remove(a.first);
|
|
 |
ebc4bd |
- rResortTbl.Insert(a.second);
|
|
 |
ebc4bd |
- }
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
else
|
|
 |
ebc4bd |
InvalidateRange();
|
|
 |
ebc4bd |
diff --git a/sw/source/core/undo/unredln.cxx b/sw/source/core/undo/unredln.cxx
|
|
 |
ebc4bd |
index 283bf30..48b80c7 100644
|
|
 |
ebc4bd |
--- a/sw/source/core/undo/unredln.cxx
|
|
 |
ebc4bd |
+++ b/sw/source/core/undo/unredln.cxx
|
|
 |
ebc4bd |
@@ -243,7 +243,7 @@ void SwUndoRedlineSort::UndoRedlineImpl(SwDoc & rDoc, SwPaM & rPam)
|
|
 |
ebc4bd |
OSL_ENSURE( USHRT_MAX != nFnd && nFnd+1 < (sal_uInt16)rDoc.GetRedlineTbl().size(),
|
|
 |
ebc4bd |
"could not find an Insert object" );
|
|
 |
ebc4bd |
++nFnd;
|
|
 |
ebc4bd |
- rDoc.GetRedlineTbl()[nFnd]->Show( 1 );
|
|
 |
ebc4bd |
+ rDoc.GetRedlineTbl()[nFnd]->Show(1, nFnd);
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
--
|
|
 |
ebc4bd |
1.9.3
|
|
 |
ebc4bd |
|