Kaydet (Commit) b229d16c authored tarafından Oliver-Rainer Wittmann's avatar Oliver-Rainer Wittmann Kaydeden (comit) Caolán McNamara

Related: #i123480# correct the previous made refactoring

(cherry picked from commit aa46680d)

Conflicts:
	sw/source/core/undo/undobj.cxx

Change-Id: I4689d5fe02ab2c814e15a1c11ebd3ad11d6e56c8
üst 14f124a5
...@@ -115,7 +115,7 @@ public: ...@@ -115,7 +115,7 @@ public:
// Save and set Redline data. // Save and set Redline data.
static bool FillSaveData( const SwPaM& rRange, SwRedlineSaveDatas& rSData, static bool FillSaveData( const SwPaM& rRange, SwRedlineSaveDatas& rSData,
bool bDelRange = true ); bool bDelRange = true, bool bCopyNext = true );
static bool FillSaveDataForFmt( const SwPaM& , SwRedlineSaveDatas& ); static bool FillSaveDataForFmt( const SwPaM& , SwRedlineSaveDatas& );
static void SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData ); static void SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData );
static bool HasHiddenRedlines( const SwRedlineSaveDatas& rSData ); static bool HasHiddenRedlines( const SwRedlineSaveDatas& rSData );
......
...@@ -46,7 +46,9 @@ public: ...@@ -46,7 +46,9 @@ public:
SwComparePosition eCmpPos, SwComparePosition eCmpPos,
const SwPosition& rSttPos, const SwPosition& rSttPos,
const SwPosition& rEndPos, const SwPosition& rEndPos,
SwRangeRedline& rRedl ); SwRangeRedline& rRedl,
sal_Bool bCopyNext );
~SwRedlineSaveData(); ~SwRedlineSaveData();
void RedlineToDoc( SwPaM& rPam ); void RedlineToDoc( SwPaM& rPam );
...@@ -847,7 +849,7 @@ void SwUndoSaveSection::SaveSection( ...@@ -847,7 +849,7 @@ void SwUndoSaveSection::SaveSection(
} }
pRedlSaveData = new SwRedlineSaveDatas; pRedlSaveData = new SwRedlineSaveDatas;
if( !SwUndo::FillSaveData( aPam, *pRedlSaveData, true )) if( !SwUndo::FillSaveData( aPam, *pRedlSaveData, true, true ))
delete pRedlSaveData, pRedlSaveData = 0; delete pRedlSaveData, pRedlSaveData = 0;
nStartPos = rRange.aStart.GetIndex(); nStartPos = rRange.aStart.GetIndex();
...@@ -912,9 +914,10 @@ SwRedlineSaveData::SwRedlineSaveData( ...@@ -912,9 +914,10 @@ SwRedlineSaveData::SwRedlineSaveData(
SwComparePosition eCmpPos, SwComparePosition eCmpPos,
const SwPosition& rSttPos, const SwPosition& rSttPos,
const SwPosition& rEndPos, const SwPosition& rEndPos,
SwRangeRedline& rRedl ) SwRangeRedline& rRedl,
sal_Bool bCopyNext )
: SwUndRng( rRedl ) : SwUndRng( rRedl )
, SwRedlineData( rRedl.GetRedlineData(), true ) , SwRedlineData( rRedl.GetRedlineData(), bCopyNext )
{ {
assert( POS_OUTSIDE == eCmpPos || assert( POS_OUTSIDE == eCmpPos ||
!rRedl.GetContentIdx() ); // "Redline with Content" !rRedl.GetContentIdx() ); // "Redline with Content"
...@@ -925,6 +928,7 @@ SwRedlineSaveData::SwRedlineSaveData( ...@@ -925,6 +928,7 @@ SwRedlineSaveData::SwRedlineSaveData(
nEndNode = rEndPos.nNode.GetIndex(); nEndNode = rEndPos.nNode.GetIndex();
nEndCntnt = rEndPos.nContent.GetIndex(); nEndCntnt = rEndPos.nContent.GetIndex();
break; break;
case POS_OVERLAP_BEHIND: // Pos1 overlaps Pos2 at the end case POS_OVERLAP_BEHIND: // Pos1 overlaps Pos2 at the end
nSttNode = rSttPos.nNode.GetIndex(); nSttNode = rSttPos.nNode.GetIndex();
nSttCntnt = rSttPos.nContent.GetIndex(); nSttCntnt = rSttPos.nContent.GetIndex();
...@@ -996,7 +1000,8 @@ void SwRedlineSaveData::RedlineToDoc( SwPaM& rPam ) ...@@ -996,7 +1000,8 @@ void SwRedlineSaveData::RedlineToDoc( SwPaM& rPam )
bool SwUndo::FillSaveData( bool SwUndo::FillSaveData(
const SwPaM& rRange, const SwPaM& rRange,
SwRedlineSaveDatas& rSData, SwRedlineSaveDatas& rSData,
bool bDelRange ) bool bDelRange,
bool bCopyNext )
{ {
rSData.DeleteAndDestroyAll(); rSData.DeleteAndDestroyAll();
...@@ -1009,6 +1014,7 @@ bool SwUndo::FillSaveData( ...@@ -1009,6 +1014,7 @@ bool SwUndo::FillSaveData(
for ( ; n < rTbl.size(); ++n ) for ( ; n < rTbl.size(); ++n )
{ {
SwRangeRedline* pRedl = rTbl[n]; SwRangeRedline* pRedl = rTbl[n];
const SwComparePosition eCmpPos = const SwComparePosition eCmpPos =
ComparePosition( *pStt, *pEnd, *pRedl->Start(), *pRedl->End() ); ComparePosition( *pStt, *pEnd, *pRedl->Start(), *pRedl->End() );
if ( eCmpPos != POS_BEFORE if ( eCmpPos != POS_BEFORE
...@@ -1016,12 +1022,14 @@ bool SwUndo::FillSaveData( ...@@ -1016,12 +1022,14 @@ bool SwUndo::FillSaveData(
&& eCmpPos != POS_COLLIDE_END && eCmpPos != POS_COLLIDE_END
&& eCmpPos != POS_COLLIDE_START ) && eCmpPos != POS_COLLIDE_START )
{ {
pNewData = new SwRedlineSaveData( eCmpPos, *pStt, *pEnd, *pRedl ); pNewData = new SwRedlineSaveData( eCmpPos, *pStt, *pEnd, *pRedl, bCopyNext );
rSData.push_back( pNewData ); rSData.push_back( pNewData );
} }
} }
if( !rSData.empty() && bDelRange ) if( !rSData.empty() && bDelRange )
{
rRange.GetDoc()->DeleteRedline( rRange, false, USHRT_MAX ); rRange.GetDoc()->DeleteRedline( rRange, false, USHRT_MAX );
}
return !rSData.empty(); return !rSData.empty();
} }
...@@ -1041,12 +1049,13 @@ bool SwUndo::FillSaveDataForFmt( ...@@ -1041,12 +1049,13 @@ bool SwUndo::FillSaveDataForFmt(
SwRangeRedline* pRedl = rTbl[n]; SwRangeRedline* pRedl = rTbl[n];
if ( nsRedlineType_t::REDLINE_FORMAT == pRedl->GetType() ) if ( nsRedlineType_t::REDLINE_FORMAT == pRedl->GetType() )
{ {
const SwPosition *pRStt = pRedl->Start(), *pREnd = pRedl->End(); const SwComparePosition eCmpPos = ComparePosition( *pStt, *pEnd, *pRedl->Start(), *pRedl->End() );
if ( eCmpPos != POS_BEFORE
SwComparePosition eCmpPos = ComparePosition( *pStt, *pEnd, *pRStt, *pREnd ); && eCmpPos != POS_BEHIND
if ( POS_BEFORE != eCmpPos && POS_BEHIND != eCmpPos && POS_COLLIDE_END != eCmpPos && POS_COLLIDE_START != eCmpPos ) && eCmpPos != POS_COLLIDE_END
&& eCmpPos != POS_COLLIDE_START )
{ {
pNewData = new SwRedlineSaveData( eCmpPos, *pStt, *pEnd, *pRedl ); pNewData = new SwRedlineSaveData( eCmpPos, *pStt, *pEnd, *pRedl, true );
rSData.push_back( pNewData ); rSData.push_back( pNewData );
} }
...@@ -1055,6 +1064,7 @@ bool SwUndo::FillSaveDataForFmt( ...@@ -1055,6 +1064,7 @@ bool SwUndo::FillSaveDataForFmt(
return !rSData.empty(); return !rSData.empty();
} }
void SwUndo::SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData ) void SwUndo::SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData )
{ {
RedlineMode_t eOld = rDoc.GetRedlineMode(); RedlineMode_t eOld = rDoc.GetRedlineMode();
......
...@@ -58,7 +58,7 @@ SwUndoRedline::SwUndoRedline( SwUndoId nUsrId, const SwPaM& rRange ) ...@@ -58,7 +58,7 @@ SwUndoRedline::SwUndoRedline( SwUndoId nUsrId, const SwPaM& rRange )
sal_uLong nEndExtra = rDoc.GetNodes().GetEndOfExtras().GetIndex(); sal_uLong nEndExtra = rDoc.GetNodes().GetEndOfExtras().GetIndex();
mpRedlSaveData = new SwRedlineSaveDatas; mpRedlSaveData = new SwRedlineSaveDatas;
if( !FillSaveData( rRange, *mpRedlSaveData, false )) if( !FillSaveData( rRange, *mpRedlSaveData, false, UNDO_REJECT_REDLINE != mnUserId ))
delete mpRedlSaveData, mpRedlSaveData = 0; delete mpRedlSaveData, mpRedlSaveData = 0;
else else
{ {
...@@ -116,7 +116,7 @@ void SwUndoRedline::RedoImpl(::sw::UndoRedoContext & rContext) ...@@ -116,7 +116,7 @@ void SwUndoRedline::RedoImpl(::sw::UndoRedoContext & rContext)
if( mpRedlSaveData && mbHiddenRedlines ) if( mpRedlSaveData && mbHiddenRedlines )
{ {
sal_uLong nEndExtra = pDoc->GetNodes().GetEndOfExtras().GetIndex(); sal_uLong nEndExtra = pDoc->GetNodes().GetEndOfExtras().GetIndex();
FillSaveData(rPam, *mpRedlSaveData, false ); FillSaveData(rPam, *mpRedlSaveData, false, UNDO_REJECT_REDLINE != mnUserId );
nEndExtra -= pDoc->GetNodes().GetEndOfExtras().GetIndex(); nEndExtra -= pDoc->GetNodes().GetEndOfExtras().GetIndex();
nSttNode -= nEndExtra; nSttNode -= nEndExtra;
...@@ -379,7 +379,7 @@ SwUndoCompDoc::SwUndoCompDoc( const SwRangeRedline& rRedl ) ...@@ -379,7 +379,7 @@ SwUndoCompDoc::SwUndoCompDoc( const SwRangeRedline& rRedl )
} }
pRedlSaveData = new SwRedlineSaveDatas; pRedlSaveData = new SwRedlineSaveDatas;
if( !FillSaveData( rRedl, *pRedlSaveData, false )) if( !FillSaveData( rRedl, *pRedlSaveData, false, true ))
delete pRedlSaveData, pRedlSaveData = 0; delete pRedlSaveData, pRedlSaveData = 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment