Kaydet (Commit) 6a37faaf authored tarafından Michael Stahl's avatar Michael Stahl

sw: make SplitRedline() a little more readable

Change-Id: Icd99c8d98ae4c5cd6c6552a929c28ad0f096c214
üst c4cf8576
...@@ -1823,59 +1823,57 @@ bool DocumentRedlineManager::SplitRedline( const SwPaM& rRange ) ...@@ -1823,59 +1823,57 @@ bool DocumentRedlineManager::SplitRedline( const SwPaM& rRange )
{ {
bool bChg = false; bool bChg = false;
sal_uInt16 n = 0; sal_uInt16 n = 0;
const SwPosition* pStt = rRange.Start(), const SwPosition* pStt = rRange.Start();
* pEnd = pStt == rRange.GetPoint() ? rRange.GetMark() const SwPosition* pEnd = rRange.End();
: rRange.GetPoint();
GetRedline( *pStt, &n ); GetRedline( *pStt, &n );
for( ; n < mpRedlineTbl->size() ; ++n ) for ( ; n < mpRedlineTbl->size(); ++n)
{ {
SwRangeRedline* pTmp = (*mpRedlineTbl)[ n ]; SwRangeRedline * pRedline = (*mpRedlineTbl)[ n ];
SwPosition* pTStt = pTmp->Start(), SwPosition *const pRedlineStart = pRedline->Start();
* pTEnd = pTStt == pTmp->GetPoint() ? pTmp->GetMark() SwPosition *const pRedlineEnd = pRedline->End();
: pTmp->GetPoint(); if (*pRedlineStart <= *pStt && *pStt <= *pRedlineEnd &&
if( *pTStt <= *pStt && *pStt <= *pTEnd && *pRedlineStart <= *pEnd && *pEnd <= *pRedlineEnd)
*pTStt <= *pEnd && *pEnd <= *pTEnd )
{ {
bChg = true; bChg = true;
int nn = 0; int nn = 0;
if( *pStt == *pTStt ) if (*pStt == *pRedlineStart)
nn += 1; nn += 1;
if( *pEnd == *pTEnd ) if (*pEnd == *pRedlineEnd)
nn += 2; nn += 2;
SwRangeRedline* pNew = 0; SwRangeRedline* pNew = 0;
switch( nn ) switch( nn )
{ {
case 0: case 0:
pNew = new SwRangeRedline( *pTmp ); pNew = new SwRangeRedline( *pRedline );
pTmp->SetEnd( *pStt, pTEnd ); pRedline->SetEnd( *pStt, pRedlineEnd );
pNew->SetStart( *pEnd ); pNew->SetStart( *pEnd );
break; break;
case 1: case 1:
*pTStt = *pEnd; *pRedlineStart = *pEnd;
break; break;
case 2: case 2:
*pTEnd = *pStt; *pRedlineEnd = *pStt;
break; break;
case 3: case 3:
pTmp->InvalidateRange(); pRedline->InvalidateRange();
mpRedlineTbl->DeleteAndDestroy( n-- ); mpRedlineTbl->DeleteAndDestroy( n-- );
pTmp = 0; pRedline = nullptr;
break; break;
} }
if( pTmp && !pTmp->HasValidRange() ) if (pRedline && !pRedline->HasValidRange())
{ {
// re-insert // re-insert
mpRedlineTbl->Remove( n ); mpRedlineTbl->Remove( n );
mpRedlineTbl->Insert( pTmp, n ); mpRedlineTbl->Insert( pRedline, n );
} }
if( pNew ) if( pNew )
mpRedlineTbl->Insert( pNew, n ); mpRedlineTbl->Insert( pNew, n );
} }
else if( *pEnd < *pTStt ) else if (*pEnd < *pRedlineStart)
break; break;
} }
return bChg; return bChg;
......
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