summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Weissenbacher <p.weissenbacher@gmail.com>2013-11-14 12:46:35 +0100
committerNorbert Thiebaud <nthiebaud@gmail.com>2013-11-14 15:31:28 +0000
commit9964dbdda0dd8bb0471a3153ce133a76e98a09b0 (patch)
tree2172ff394e1473095ed6347efbc50a5eb6f858fc
parent1a466b8a3bc178436b41351dd277840872764446 (diff)
Translate German comments
Change-Id: I79abdb853af619f2c66638bde990ef8ae33fe492 Reviewed-on: https://gerrit.libreoffice.org/6671 Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> Tested-by: Norbert Thiebaud <nthiebaud@gmail.com>
-rw-r--r--sc/source/core/tool/chartarr.cxx23
-rw-r--r--sc/source/core/tool/chartpos.cxx48
-rw-r--r--sc/source/core/tool/chgtrack.cxx399
3 files changed, 233 insertions, 237 deletions
diff --git a/sc/source/core/tool/chartarr.cxx b/sc/source/core/tool/chartarr.cxx
index a60e361e8fdd..627068a5f731 100644
--- a/sc/source/core/tool/chartarr.cxx
+++ b/sc/source/core/tool/chartarr.cxx
@@ -105,7 +105,7 @@ ScMemChart* ScChartArray::CreateMemChart()
return CreateMemChartSingle();
}
else
- return CreateMemChartMulti(); // kann 0 Range besser ab als Single
+ return CreateMemChartMulti(); // Can handle 0 range better than Single
}
namespace {
@@ -163,7 +163,7 @@ ScMemChart* ScChartArray::CreateMemChartSingle()
ScRangeListRef aRangeListRef(GetRangeList());
aRangeListRef->front()->GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 );
- SCCOL nStrCol = nCol1; // remember for labeling
+ SCCOL nStrCol = nCol1; // remember for labeling
SCROW nStrRow = nRow1;
// Skip hidden columns.
// TODO: make use of last column value once implemented.
@@ -239,7 +239,7 @@ ScMemChart* ScChartArray::CreateMemChartSingle()
}
//
- // Daten
+ // Data
//
ScMemChart* pMemChart = new ScMemChart(
@@ -262,17 +262,15 @@ ScMemChart* ScChartArray::CreateMemChartSingle()
}
else
{
- //! Flag, dass Daten ungueltig ??
-
+ // Flag marking data as invalid?
for (nCol=0; nCol<nColCount; nCol++)
for (nRow=0; nRow<nRowCount; nRow++)
pMemChart->SetData( static_cast<short>(nCol), static_cast<short>(nRow), DBL_MIN );
}
//
- // Spalten-Header
+ // Column Header
//
-
for (nCol=0; nCol<nColCount; nCol++)
{
OUString aString;
@@ -293,9 +291,8 @@ ScMemChart* ScChartArray::CreateMemChartSingle()
}
//
- // Zeilen-Header
+ // Row Header
//
-
for (nRow=0; nRow<nRowCount; nRow++)
{
OUString aString;
@@ -344,7 +341,7 @@ ScMemChart* ScChartArray::CreateMemChartMulti()
}
//
- // Daten
+ // Data
//
ScMemChart* pMemChart = new ScMemChart(
@@ -361,7 +358,7 @@ ScMemChart* ScChartArray::CreateMemChartMulti()
{
for ( nRow = 0; nRow < nRowCount; nRow++, nIndex++ )
{
- double nVal = DBL_MIN; // Hack for Chart to recognize empty cells
+ double nVal = DBL_MIN; // Hack for Chart to recognize empty cells
const ScAddress* pPos = GetPositionMap()->GetPosition( nIndex );
if (pPos)
// otherwise: Gap
@@ -375,7 +372,7 @@ ScMemChart* ScChartArray::CreateMemChartMulti()
{
for ( nRow = 0; nRow < nRowCount; nRow++, nIndex++ )
{
- double nVal = DBL_MIN; // Hack for Chart to recognize empty cells
+ double nVal = DBL_MIN; // Hack for Chart to recognize empty cells
const ScAddress* pPos = GetPositionMap()->GetPosition( nIndex );
if (pPos)
// otherwise: Gap
@@ -385,7 +382,7 @@ ScMemChart* ScChartArray::CreateMemChartMulti()
}
}
-//2do: Label when gaps
+ //TODO: Label when gaps
//
// Column header
diff --git a/sc/source/core/tool/chartpos.cxx b/sc/source/core/tool/chartpos.cxx
index 487194509805..a64c5ffdf13e 100644
--- a/sc/source/core/tool/chartpos.cxx
+++ b/sc/source/core/tool/chartpos.cxx
@@ -134,7 +134,9 @@ void ScChartPositioner::GlueState()
SCROW nMaxRows, nEndRow;
nMaxCols = nEndCol = 0;
nMaxRows = nEndRow = 0;
- for ( size_t i = 1, nRanges = aRangeListRef->size(); i <= nRanges; ++i ) // <= so 1 extra pass after last item
+
+ // <= so 1 extra pass after last item
+ for ( size_t i = 1, nRanges = aRangeListRef->size(); i <= nRanges; ++i )
{ // detect spanning/surrounding area etc.
SCCOLROW nTmp, n1, n2;
if ( (n1 = pR->aStart.Col()) < nStartCol ) nStartCol = static_cast<SCCOL>(n1 );
@@ -143,7 +145,9 @@ void ScChartPositioner::GlueState()
if ( (n1 = pR->aStart.Row()) < nStartRow ) nStartRow = static_cast<SCROW>(n1 );
if ( (n2 = pR->aEnd.Row() ) > nEndRow ) nEndRow = static_cast<SCROW>(n2 );
if ( (nTmp = n2 - n1 + 1 ) > nMaxRows ) nMaxRows = static_cast<SCROW>(nTmp);
- if ( i < nRanges ) // in last pass; i = nRanges so don't use at()
+
+ // in last pass; i = nRanges so don't use at()
+ if ( i < nRanges )
pR = (*aRangeListRef)[i];
}
SCCOL nC = nEndCol - nStartCol + 1;
@@ -159,14 +163,15 @@ void ScChartPositioner::GlueState()
return;
}
sal_uLong nCR = (sal_uLong)nC * nR;
-//2do:
-/*
+
+ /*
+ TODO:
First do it simple without bit masking. A maximum of 8MB could be allocated
this way (256 Cols x 32000 Rows). That could be reduced to 2MB by
using 2 Bits per entry, but it is faster this way.
- Another optimizing would be to store only used rows/columns in the array, but
- would mean another iteration of the RangeList indirect access to the array.
- */
+ Another optimization would be to store only used rows/columns in the array, but
+ would mean another iteration of the RangeList indirect access to the array. */
+
const sal_uInt8 nHole = 0;
const sal_uInt8 nOccu = 1;
const sal_uInt8 nFree = 2;
@@ -200,11 +205,11 @@ void ScChartPositioner::GlueState()
for ( nRow = 0; bGlue && nRow < nR; nRow++, p++ )
{
if ( *p == nOccu )
- { // Wenn einer mittendrin liegt ist keine Zusammenfassung
- // moeglich. Am Rand koennte ok sein, wenn in dieser Spalte
- // in jeder belegten Zeile einer belegt ist.
+ { // If there's one right in the middle, we can't combine.
+ // If it were at the edge, we could combine, if in this Column
+ // in every set line, one is set.
if ( nRow > 0 && nCol > 0 )
- bGlue = false; // nCol==0 can be DummyUpperLeft
+ bGlue = false; // nCol==0 can be DummyUpperLeft
else
nRow = nR;
}
@@ -214,7 +219,7 @@ void ScChartPositioner::GlueState()
if ( bGlue && *(p = (pA + ((((sal_uLong)nCol+1) * nR) - 1))) == nFree )
{ // mark column as totally unused
*p = nGlue;
- bGlueCols = sal_True; // one unused column at least
+ bGlueCols = sal_True; // one unused column at least
}
}
@@ -227,7 +232,7 @@ void ScChartPositioner::GlueState()
if ( *p == nOccu )
{
if ( nCol > 0 && nRow > 0 )
- bGlue = false; // nRow==0 can be DummyUpperLeft
+ bGlue = false; // nRow==0 can be DummyUpperLeft
else
nCol = nC;
}
@@ -237,16 +242,15 @@ void ScChartPositioner::GlueState()
if ( bGlue && *(p = (pA + ((((sal_uLong)nC-1) * nR) + nRow))) == nFree )
{ // mark row as totally unused
*p = nGlue;
- bGlueRows = sal_True; // one unused row at least
+ bGlueRows = sal_True; // one unused row at least
}
}
- // n=1: die linke obere Ecke koennte bei Beschriftung automagisch
- // hinzugezogen werden
+ // If n=1: The upper left corner could be automagically pulled in for labeling
p = pA + 1;
for ( sal_uLong n = 1; bGlue && n < nCR; n++, p++ )
- { // ein unberuehrtes Feld heisst, dass es weder spaltenweise noch
- // zeilenweise zu erreichen war, also nichts zusamenzufassen
+ { // An untouched field means we could neither reach it through rows nor columns,
+ // thus we can't combine anything
if ( *p == nHole )
bGlue = false;
}
@@ -403,7 +407,7 @@ void ScChartPositioner::CreatePositionMap()
}
}
}
- // bei NoGlue werden zusammengehoerige Tabellen als ColGlue dargestellt
+ // For NoGlue: associated tables will be rendered as ColGlue
nNoGlueRow += nRow2 - nRow1 + 1;
}
@@ -413,7 +417,7 @@ void ScChartPositioner::CreatePositionMap()
{
RowMap* pCol = pCols->begin()->second;
if ( bDummyUpperLeft )
- (*pCol)[ 0 ] = NULL; // Dummy for labeling
+ (*pCol)[ 0 ] = NULL; // Dummy for labeling
nRowCount = static_cast< SCSIZE >( pCol->size());
}
else
@@ -471,7 +475,7 @@ void ScChartPositioner::CreatePositionMap()
// cleanup
for (ColumnMap::const_iterator it = pCols->begin(); it != pCols->end(); ++it )
- { //! nur Tables loeschen, nicht die ScAddress*
+ { // Only delete tables, not the ScAddress*!
delete it->second;
}
delete pCols;
@@ -537,7 +541,7 @@ ScChartPositionMap::ScChartPositionMap( SCCOL nChartCols, SCROW nChartRows,
{
if ( nRowAdd )
{
- ppColHeader[ nCol ] = pPosIter->second; // independent
+ ppColHeader[ nCol ] = pPosIter->second; // independent
++pPosIter;
}
else
diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx
index 901ca52f898f..87d0cdb640f8 100644
--- a/sc/source/core/tool/chgtrack.cxx
+++ b/sc/source/core/tool/chgtrack.cxx
@@ -190,9 +190,9 @@ bool ScChangeAction::IsClickable() const
pL = pL->GetNext();
}
}
- return true; // for Select() a content doesn't have to be touchable
+ return true; // for Select() a content doesn't have to be touchable
}
- return IsTouchable(); // Accept()/Reject() only on touchables
+ return IsTouchable(); // Accept()/Reject() only on touchables
}
bool ScChangeAction::IsRejectable() const
@@ -207,8 +207,8 @@ bool ScChangeAction::IsRejectable() const
ScChangeActionContent* pNextContent =
((ScChangeActionContent*)this)->GetNextContent();
if ( pNextContent == NULL )
- return true; // *this is TopContent
- return pNextContent->IsRejected(); // *this is next rejectable
+ return true; // *this is TopContent
+ return pNextContent->IsRejected(); // *this is next rejectable
}
return IsTouchable();
}
@@ -225,15 +225,15 @@ bool ScChangeAction::IsInternalRejectable() const
ScChangeActionContent* pNextContent =
((ScChangeActionContent*)this)->GetNextContent();
if ( pNextContent == NULL )
- return true; // *this is TopContent
- return pNextContent->IsRejected(); // *this is next rejectable
+ return true; // *this is TopContent
+ return pNextContent->IsRejected(); // *this is next rejectable
}
return IsTouchable();
}
bool ScChangeAction::IsDialogRoot() const
{
- return IsInternalRejectable(); // only rejectables in root
+ return IsInternalRejectable(); // only rejectables in root
}
bool ScChangeAction::IsDialogParent() const
@@ -291,7 +291,7 @@ void ScChangeAction::RemoveAllLinks()
void ScChangeAction::RemoveAllAnyLinks()
{
while ( pLinkAny )
- delete pLinkAny; // rueckt sich selbst hoch
+ delete pLinkAny; // Moves up by itself
}
bool ScChangeAction::RemoveDeletedIn( const ScChangeAction* p )
@@ -330,9 +330,9 @@ bool ScChangeAction::IsDeletedIn( const ScChangeAction* p ) const
void ScChangeAction::RemoveAllDeletedIn()
{
- //! nicht vom evtl. TopContent sondern wirklich dieser
+ //! Not from TopContent, but really this one
while ( pLinkDeletedIn )
- delete pLinkDeletedIn; // rueckt sich selbst hoch
+ delete pLinkDeletedIn; // Moves up by itself
}
bool ScChangeAction::IsDeletedInDelType( ScChangeActionType eDelType ) const
@@ -340,7 +340,7 @@ bool ScChangeAction::IsDeletedInDelType( ScChangeActionType eDelType ) const
ScChangeActionLinkEntry* pL = GetDeletedIn();
if ( pL )
{
- // InsertType fuer MergePrepare/MergeOwn
+ // InsertType for MergePrepare/MergeOwn
ScChangeActionType eInsType;
switch ( eDelType )
{
@@ -392,13 +392,13 @@ void ScChangeAction::SetDeletedIn( ScChangeAction* p )
void ScChangeAction::RemoveAllDeleted()
{
while ( pLinkDeleted )
- delete pLinkDeleted; // rueckt sich selbst hoch
+ delete pLinkDeleted; // Moves up by itself
}
void ScChangeAction::RemoveAllDependent()
{
while ( pLinkDependent )
- delete pLinkDependent; // rueckt sich selbst hoch
+ delete pLinkDependent; // Moves up by itself
}
DateTime ScChangeAction::GetDateTime() const
@@ -600,7 +600,7 @@ void ScChangeAction::SetRejected()
void ScChangeAction::RejectRestoreContents( ScChangeTrack* pTrack,
SCsCOL nDx, SCsROW nDy )
{
- // Liste der Contents aufbauen
+ // Construct list of Contents
ScChangeActionCellListEntry* pListContents = NULL;
for ( ScChangeActionLinkEntry* pL = pLinkDeleted; pL; pL = pL->GetNext() )
{
@@ -612,10 +612,11 @@ void ScChangeAction::RejectRestoreContents( ScChangeTrack* pTrack,
pListContents = pE;
}
}
- SetState( SC_CAS_REJECTED ); // vor UpdateReference fuer Move
- pTrack->UpdateReference( this, true ); // LinkDeleted freigeben
+ SetState( SC_CAS_REJECTED ); // Before UpdateReference for Move
+ pTrack->UpdateReference( this, true ); // Free LinkDeleted
OSL_ENSURE( !pLinkDeleted, "ScChangeAction::RejectRestoreContents: pLinkDeleted != NULL" );
- // Liste der Contents abarbeiten und loeschen
+
+ // Work through list of Contents and delete
ScDocument* pDoc = pTrack->GetDocument();
ScChangeActionCellListEntry* pE = pListContents;
while ( pE )
@@ -628,7 +629,7 @@ void ScChangeAction::RejectRestoreContents( ScChangeTrack* pTrack,
delete pE;
pE = pNextEntry;
}
- DeleteCellEntries(); // weg mit den generierten
+ DeleteCellEntries(); // Remove generated ones
}
void ScChangeAction::SetDeletedInThis( sal_uLong nActionNumber,
@@ -895,9 +896,11 @@ void ScChangeActionDel::UpdateReference( const ScChangeTrack* /* pTrack */,
sal_Int32 nDxP, sal_Int32 nDyP, sal_Int32 nDz )
{
ScRefUpdate::Update( eMode, rRange, nDxP, nDyP, nDz, GetBigRange() );
+
if ( !IsDeletedIn() )
return ;
- // evtl. in "druntergerutschten" anpassen
+
+ // Correct in the ones who slipped through
for ( ScChangeActionLinkEntry* pL = pLinkDeleted; pL; pL = pL->GetNext() )
{
ScChangeAction* p = pL->GetAction();
@@ -988,13 +991,13 @@ bool ScChangeActionDel::Reject( ScDocument* pDoc )
return false;
if ( IsTopDelete() )
- { // den kompletten Bereich in einem Rutsch restaurieren
+ { // Restore whole section in one go
bool bOk = true;
ScBigRange aTmpRange( GetOverAllRange() );
if ( !aTmpRange.IsValid( pDoc ) )
{
if ( GetType() == SC_CAT_DELETE_TABS )
- { // wird Tab angehaengt?
+ { // Do we attach a Tab?
if ( aTmpRange.aStart.Tab() > pDoc->GetMaxTableNumber() )
bOk = false;
}
@@ -1004,7 +1007,7 @@ bool ScChangeActionDel::Reject( ScDocument* pDoc )
if ( bOk )
{
ScRange aRange( aTmpRange.MakeRange() );
- // InDelete... fuer Formel UpdateReference in Document
+ // InDelete... for formula UpdateReference in Document
pTrack->SetInDeleteRange( aRange );
pTrack->SetInDeleteTop( true );
pTrack->SetInDeleteUndo( true );
@@ -1013,7 +1016,7 @@ bool ScChangeActionDel::Reject( ScDocument* pDoc )
{
case SC_CAT_DELETE_COLS :
if ( !(aRange.aStart.Col() == 0 && aRange.aEnd.Col() == MAXCOL) )
- { // nur wenn nicht TabDelete
+ { // Only if not TabDelete
if ( ( bOk = pDoc->CanInsertCol( aRange ) ) != false )
bOk = pDoc->InsertCol( aRange );
}
@@ -1024,7 +1027,7 @@ bool ScChangeActionDel::Reject( ScDocument* pDoc )
break;
case SC_CAT_DELETE_TABS :
{
-//2do: Tabellennamen merken?
+ //TODO: Remember table names?
OUString aName;
pDoc->CreateValidTabName( aName );
if ( ( bOk = pDoc->ValidNewTabName( aName ) ) != false )
@@ -1044,10 +1047,10 @@ bool ScChangeActionDel::Reject( ScDocument* pDoc )
pTrack->SetInDeleteTop( false );
return false;
}
- // InDeleteTop fuer UpdateReference-Undo behalten
+ // Keep InDeleteTop for UpdateReference Undo
}
- // setzt rejected und ruft UpdateReference-Undo und DeleteCellEntries
+ // Sets rejected and calls UpdateReference-Undo and DeleteCellEntries
RejectRestoreContents( pTrack, GetDx(), GetDy() );
pTrack->SetInDeleteTop( false );
@@ -1056,7 +1059,7 @@ bool ScChangeActionDel::Reject( ScDocument* pDoc )
}
void ScChangeActionDel::UndoCutOffMoves()
-{ // abgeschnittene Moves wiederherstellen, Entries/Links deleten
+{ // Restore cut off Moves; delete Entries/Links
while ( pLinkMove )
{
ScChangeActionMove* pMove = pLinkMove->GetMove();
@@ -1099,12 +1102,12 @@ void ScChangeActionDel::UndoCutOffMoves()
// added to avoid warnings
}
}
- delete pLinkMove; // rueckt sich selbst hoch
+ delete pLinkMove; // Moves up by itself
}
}
void ScChangeActionDel::UndoCutOffInsert()
-{ // abgeschnittenes Insert wiederherstellen
+{ //Restore cut off Insert
if ( pCutOff )
{
switch ( pCutOff->GetType() )
@@ -1246,11 +1249,11 @@ bool ScChangeActionMove::Reject( ScDocument* pDoc )
if ( !bOk )
return false;
- pTrack->LookUpContents( aToRange, pDoc, 0, 0, 0 ); // zu movende Contents
+ pTrack->LookUpContents( aToRange, pDoc, 0, 0, 0 ); // Contents to be moved
pDoc->DeleteAreaTab( aToRange, IDF_ALL );
pDoc->DeleteAreaTab( aFrmRange, IDF_ALL );
- // Formeln im Dokument anpassen
+ // Adjust formula in the Document
sc::RefUpdateContext aCxt(*pDoc);
aCxt.meMode = URM_MOVE;
aCxt.maRange = aFrmRange;
@@ -1259,11 +1262,11 @@ bool ScChangeActionMove::Reject( ScDocument* pDoc )
aCxt.mnTabDelta = aFrmRange.aStart.Tab() - aToRange.aStart.Tab();
pDoc->UpdateReference(aCxt, NULL);
- // LinkDependent freigeben, nachfolgendes UpdateReference-Undo setzt
+ // Free LinkDependent, set succeeding UpdateReference Undo
// ToRange->FromRange Dependents
RemoveAllDependent();
- // setzt rejected und ruft UpdateReference-Undo und DeleteCellEntries
+ // Sets rejected and calls UpdateReference Undo and DeleteCellEntries
RejectRestoreContents( pTrack, 0, 0 );
while ( pLinkDependent )
@@ -1275,11 +1278,11 @@ bool ScChangeActionMove::Reject( ScDocument* pDoc )
if ( !pContent->IsDeletedIn() &&
pContent->GetBigRange().aStart.IsValid( pDoc ) )
pContent->PutNewValueToDoc( pDoc, 0, 0 );
- // in LookUpContents generierte loeschen
+ // Delete the ones created in LookUpContents
if ( pTrack->IsGenerated( pContent->GetActionNumber() ) &&
!pContent->IsDeletedIn() )
{
- pLinkDependent->UnLink(); //! sonst wird der mitgeloescht
+ pLinkDependent->UnLink(); //! Else this one is also deleted
pTrack->DeleteGeneratedDelContent( pContent );
}
}
@@ -1317,7 +1320,7 @@ ScChangeActionContent::ScChangeActionContent( const sal_uLong nActionNumber,
if (!maOldCell.isEmpty())
SetCell(maOldValue, maOldCell, 0, pDoc);
- if (!sOldValue.isEmpty()) // #i40704# don't overwrite SetCell result with empty string
+ if (!sOldValue.isEmpty()) // #i40704# don't overwrite SetCell result with empty string
maOldValue = sOldValue; // set again, because SetCell removes it
}
@@ -1335,7 +1338,7 @@ ScChangeActionContent::ScChangeActionContent( const sal_uLong nActionNumber,
if (!maNewCell.isEmpty())
SetCell(maNewValue, maNewCell, 0, pDoc);
- if (!sNewValue.isEmpty()) // #i40704# don't overwrite SetCell result with empty string
+ if (!sNewValue.isEmpty()) // #i40704# don't overwrite SetCell result with empty string
maNewValue = sNewValue; // set again, because SetCell removes it
}
@@ -1585,9 +1588,9 @@ bool ScChangeActionContent::Select( ScDocument* pDoc, ScChangeTrack* pTrack,
pEnd = pContent;
}
+ // If not oldest: Is it anyone else than the last one?
if ( bOldest || pEnd != this )
- { // wenn nicht aeltester: ist es ueberhaupt ein anderer als der letzte?
- ScRange aRange( aBigRange.aStart.MakeAddress() );
+ { ScRange aRange( aBigRange.aStart.MakeAddress() );
const ScAddress& rPos = aRange.aStart;
ScChangeActionContent* pNew = new ScChangeActionContent( aRange );
@@ -1739,7 +1742,7 @@ void ScChangeActionContent::SetValue(
switch (rOrgCell.meType)
{
case CELLTYPE_VALUE :
- { // z.B. Datum auch als solches merken
+ { // E.g.: Remember date as such
pFromDoc->GetFormatTable()->GetInputLineString(
rOrgCell.mfValue, nFormat, rStr);
}
@@ -1797,7 +1800,7 @@ void ScChangeActionContent::GetValueString(
if (rCell.mpEditText)
rStr = ScEditUtil::GetString(*rCell.mpEditText, pDoc);
break;
- case CELLTYPE_VALUE : // ist immer in rValue
+ case CELLTYPE_VALUE : // Is always in rValue
rStr = rValue;
break;
case CELLTYPE_FORMULA :
@@ -1941,12 +1944,12 @@ void ScChangeActionContent::UpdateReference( const ScChangeTrack* pTrack,
}
if ( pTrack->IsInDelete() && !pTrack->IsInDeleteTop() )
- return ; // Formeln nur kompletten Bereich updaten
+ return ; // Formula only update whole range
bool bOldFormula = maOldCell.meType == CELLTYPE_FORMULA;
bool bNewFormula = maNewCell.meType == CELLTYPE_FORMULA;
if ( bOldFormula || bNewFormula )
- { // via ScFormulaCell UpdateReference anpassen (dort)
+ { // Adjust UpdateReference via ScFormulaCell (there)
if ( pTrack->IsInDelete() )
{
const ScRange& rDelRange = pTrack->GetInDeleteRange();
@@ -1968,8 +1971,8 @@ void ScChangeActionContent::UpdateReference( const ScChangeTrack* pTrack,
{
case URM_INSDEL :
if ( nDx < 0 || nDy < 0 || nDz < 0 )
- { // Delete startet dort hinter geloeschtem Bereich,
- // Position wird dort angepasst.
+ { // Delete starts there after removed range
+ // Position is changed there
if ( nDx )
aTmpRange.aStart.IncCol( -nDx );
if ( nDy )
@@ -1979,8 +1982,8 @@ void ScChangeActionContent::UpdateReference( const ScChangeTrack* pTrack,
}
break;
case URM_MOVE :
- // Move ist hier Quelle, dort Ziel,
- // Position muss vorher angepasst sein.
+ // Move is Source here and Target there
+ // Position needs to be adjusted before that
if ( bOldFormula )
maOldCell.mpFormula->aPos = aBigRange.aStart.MakeAddress();
if ( bNewFormula )
@@ -2022,9 +2025,9 @@ void ScChangeActionContent::UpdateReference( const ScChangeTrack* pTrack,
if ( !aBigRange.aStart.IsValid( pTrack->GetDocument() ) )
{ //! HACK!
- //! UpdateReference kann nicht mit Positionen ausserhalb des
- //! Dokuments umgehen, deswegen alles auf #REF! setzen
-//2do: make it possible! das bedeutet grossen Umbau von ScAddress etc.!
+ //! UpdateReference cannot handle positions outside of the Document.
+ //! Therefore set everything to #REF!
+ //TODO: Remove the need for this hack! This means big changes to ScAddress etc.!
const ScBigAddress& rPos = aBigRange.aStart;
if ( bOldFormula )
{
@@ -2251,7 +2254,7 @@ void ScChangeTrack::ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uI
void ScChangeTrack::SetUser( const OUString& rUser )
{
if ( IsLoadSave() )
- return ; // nicht die Collection zerschiessen
+ return ; // Do not destroy the Collection
maUser = rUser;
maUserCollection.insert(maUser);
@@ -2268,7 +2271,7 @@ void ScChangeTrack::StartBlockModify( ScChangeTrackMsgType eMsgType,
if ( aModifiedLink.IsSet() )
{
if ( pBlockModifyMsg )
- aMsgStackTmp.push( pBlockModifyMsg ); // Block im Block
+ aMsgStackTmp.push( pBlockModifyMsg ); // Block in Block
pBlockModifyMsg = new ScChangeTrackMsgInfo;
pBlockModifyMsg->eMsgType = eMsgType;
pBlockModifyMsg->nStartAction = nStartAction;
@@ -2284,7 +2287,7 @@ void ScChangeTrack::EndBlockModify( sal_uLong nEndAction )
if ( pBlockModifyMsg->nStartAction <= nEndAction )
{
pBlockModifyMsg->nEndAction = nEndAction;
- // Blocks in Blocks aufgeloest
+ // Blocks dissolved in Blocks
aMsgStackFinal.push( pBlockModifyMsg );
}
else
@@ -2293,7 +2296,7 @@ void ScChangeTrack::EndBlockModify( sal_uLong nEndAction )
pBlockModifyMsg = NULL;
else
{
- pBlockModifyMsg = aMsgStackTmp.top(); // evtl. Block im Block
+ pBlockModifyMsg = aMsgStackTmp.top(); // Maybe Block in Block
aMsgStackTmp.pop();
}
}
@@ -2320,7 +2323,7 @@ void ScChangeTrack::NotifyModified( ScChangeTrackMsgType eMsgType,
if ( !pBlockModifyMsg || pBlockModifyMsg->eMsgType != eMsgType ||
(IsGenerated( nStartAction ) &&
(eMsgType == SC_CTM_APPEND || eMsgType == SC_CTM_REMOVE)) )
- { // Append innerhalb von Append z.B. nicht
+ { // Append within Append e.g. not
StartBlockModify( eMsgType, nStartAction );
EndBlockModify( nEndAction );
}
@@ -2344,7 +2347,7 @@ void ScChangeTrack::MasterLinks( ScChangeAction* pAppend )
}
if ( pAppend->IsRejecting() )
- return ; // Rejects haben keine Abhaengigkeiten
+ return ; // Rejects do not have dependencies
switch ( eType )
{
@@ -2406,10 +2409,10 @@ void ScChangeTrack::Append( ScChangeAction* pAppend, sal_uLong nAction )
pAppend->SetDateTimeUTC( aFixDateTime );
pAppend->SetActionNumber( nAction );
aMap.insert( ::std::make_pair( nAction, pAppend ) );
- // UpdateReference Inserts vor Dependencies.
- // Delete rejectendes Insert hatte UpdateReference mit Delete-Undo.
- // UpdateReference auch wenn pLast==NULL, weil pAppend ein Delete sein
- // kann, dass DelContents generiert haben kann
+ // UpdateReference Inserts before Dependencies.
+ // Delete rejecting Insert which had UpdateReference with Delete Undo.
+ // UpdateReference also with pLast==NULL, as pAppend can be a Delete,
+ // which could have generated DelContents.
if ( pAppend->IsInsertType() && !pAppend->IsRejecting() )
UpdateReference( pAppend, false );
if ( !pLast )
@@ -2421,9 +2424,9 @@ void ScChangeTrack::Append( ScChangeAction* pAppend, sal_uLong nAction )
pLast = pAppend;
Dependencies( pAppend );
}
- // UpdateReference Inserts nicht nach Dependencies.
- // Move rejectendes Move hatte UpdateReference mit Move-Undo, Inhalt in
- // ToRange nicht deleten.
+ // UpdateReference does not Insert() after Dependencies.
+ // Move rejecting Move, which had UpdateReference with Move Undo.
+ // Do not delete content in ToRange.
if ( !pAppend->IsInsertType() &&
!(pAppend->GetType() == SC_CAT_MOVE && pAppend->IsRejecting()) )
UpdateReference( pAppend, false );
@@ -2477,13 +2480,13 @@ void ScChangeTrack::AppendDeleteRange( const ScRange& rRange,
if ( !pRefDoc || nTab < pRefDoc->GetTableCount() )
{
if ( nCol1 == 0 && nCol2 == MAXCOL )
- { // ganze Zeilen und/oder Tabellen
+ { // Whole Row and/or Tables
if ( nRow1 == 0 && nRow2 == MAXROW )
- { // ganze Tabellen
-//2do: geht nicht auch komplette Tabelle als ganzes?
+ { // Whole Table
+ // TODO: Can't we do the whole Table as a whole?
ScRange aRange( 0, 0, nTab, 0, MAXROW, nTab );
for ( SCCOL nCol = nCol1; nCol <= nCol2; nCol++ )
- { // spaltenweise ist weniger als zeilenweise
+ { // Column by column is less than row by row
aRange.aStart.SetCol( nCol );
aRange.aEnd.SetCol( nCol );
if ( nCol == nCol2 )
@@ -2491,12 +2494,12 @@ void ScChangeTrack::AppendDeleteRange( const ScRange& rRange,
AppendOneDeleteRange( aRange, pRefDoc, nCol-nCol1, 0,
nTab-nTab1 + nDz, nRejectingInsert );
}
- //! immer noch InDeleteTop
+ //! Still InDeleteTop
AppendOneDeleteRange( rRange, pRefDoc, 0, 0,
nTab-nTab1 + nDz, nRejectingInsert );
}
else
- { // ganze Zeilen
+ { // Whole rows
ScRange aRange( 0, 0, nTab, MAXCOL, 0, nTab );
for ( SCROW nRow = nRow1; nRow <= nRow2; nRow++ )
{
@@ -2510,7 +2513,7 @@ void ScChangeTrack::AppendDeleteRange( const ScRange& rRange,
}
}
else if ( nRow1 == 0 && nRow2 == MAXROW )
- { // ganze Spalten
+ { // Whole columns
ScRange aRange( 0, 0, nTab, 0, MAXROW, nTab );
for ( SCCOL nCol = nCol1; nCol <= nCol2; nCol++ )
{
@@ -2554,7 +2557,7 @@ void ScChangeTrack::AppendOneDeleteRange( const ScRange& rOrgRange,
}
ScChangeActionDel* pAct = new ScChangeActionDel( aTrackRange, nDx, nDy,
this );
- // TabDelete keine Contents, sind in einzelnen Spalten
+ // TabDelete not Contents; they are in separate columns
if ( !(rOrgRange.aStart.Col() == 0 && rOrgRange.aStart.Row() == 0 &&
rOrgRange.aEnd.Col() == MAXCOL && rOrgRange.aEnd.Row() == MAXROW) )
LookUpContents( rOrgRange, pRefDoc, -nDx, -nDy, -nDz );
@@ -2586,14 +2589,13 @@ void ScChangeTrack::LookUpContents( const ScRange& rOrgRange,
if (pContent)
continue;
- // nicht getrackte Contents
+ // Untracked Contents
aPos.Set( aIter.GetPos().Col() + nDx, aIter.GetPos().Row() + nDy,
aIter.GetPos().Tab() + nDz );
GenerateDelContent(aPos, aIter.getCellValue(), pRefDoc);
- //! der Content wird hier _nicht_ per AddContent hinzugefuegt,
- //! sondern in UpdateReference, um z.B. auch kreuzende Deletes
- //! korrekt zu erfassen
+ //! The Content is _not_ added with AddContent here, but in UpdateReference.
+ //! We do this in order to e.g. handle intersecting Deletes correctly
}
}
@@ -2601,7 +2603,7 @@ void ScChangeTrack::AppendMove( const ScRange& rFromRange,
const ScRange& rToRange, ScDocument* pRefDoc )
{
ScChangeActionMove* pAct = new ScChangeActionMove( rFromRange, rToRange, this );
- LookUpContents( rToRange, pRefDoc, 0, 0, 0 ); // ueberschriebene Contents
+ LookUpContents( rToRange, pRefDoc, 0, 0, 0 ); // Overwritten Contents
Append( pAct );
}
@@ -2637,7 +2639,7 @@ void ScChangeTrack::AppendContent(
ScChangeActionContent::GetStringOfCell(aNewValue, aNewCell, pDoc, rPos);
if (!aOldValue.equals(aNewValue) || IsMatrixFormulaRangeDifferent(rOldCell, aNewCell))
- { // nur wirkliche Aenderung tracken
+ { // Only track real changes
ScRange aRange( rPos );
ScChangeActionContent* pAct = new ScChangeActionContent( aRange );
pAct->SetOldValue(rOldCell, pRefDoc, pDoc, nOldFormat);
@@ -2660,7 +2662,7 @@ void ScChangeTrack::AppendContent( const ScAddress& rPos,
ScChangeActionContent::GetStringOfCell(aNewValue, aNewCell, pDoc, rPos);
if (!aOldValue.equals(aNewValue) || IsMatrixFormulaRangeDifferent(aOldCell, aNewCell))
- { // nur wirkliche Aenderung tracken
+ { // Only track real changes
ScRange aRange( rPos );
ScChangeActionContent* pAct = new ScChangeActionContent( aRange );
pAct->SetOldValue(aOldCell, pRefDoc, pDoc);
@@ -2682,9 +2684,9 @@ void ScChangeTrack::SetLastCutMoveRange( const ScRange& rRange,
{
if ( pLastCutMove )
{
- // ToRange nicht mit Deletes linken und nicht in der Groesse aendern,
- // eigentlich unnoetig, da ein Delete vorher in
- // ScViewFunc::PasteFromClip ein ResetLastCut ausloest
+ // Do not link ToRange with Deletes and don't change its size
+ // This is actually unnecessary, as a delete triggers a ResetLastCut
+ // in ScViewFunc::PasteFromClip before that
ScBigRange& r = pLastCutMove->GetBigRange();
r.aEnd.SetCol( -1 );
r.aEnd.SetRow( -1 );
@@ -2692,7 +2694,7 @@ void ScChangeTrack::SetLastCutMoveRange( const ScRange& rRange,
r.aStart.SetCol( -1 - (rRange.aEnd.Col() - rRange.aStart.Col()) );
r.aStart.SetRow( -1 - (rRange.aEnd.Row() - rRange.aStart.Row()) );
r.aStart.SetTab( -1 - (rRange.aEnd.Tab() - rRange.aStart.Tab()) );
- // zu ueberschreibende Contents im FromRange
+ // Contents in FromRange we should overwrite
LookUpContents( rRange, pRefDoc, 0, 0, 0 );
}
}
@@ -2719,7 +2721,7 @@ void ScChangeTrack::AppendContentRange( const ScRange& rRange,
{
bDoContents = false;
SetInPasteCut( true );
- // Paste und Cut abstimmen, Paste kann groesserer Range sein
+ // Adjust Paste and Cut; Paste can be larger a Range
ScRange aRange( rRange );
ScBigRange& r = pLastCutMove->GetBigRange();
SCCOL nTmpCol;
@@ -2744,11 +2746,11 @@ void ScChangeTrack::AppendContentRange( const ScRange& rRange,
bDoContents = true;
}
r = aRange;
- Undo( nStartLastCut, nEndLastCut ); // hier werden sich die Cuts gemerkt
- //! StartAction erst nach Undo
+ Undo( nStartLastCut, nEndLastCut ); // Remember Cuts here
+ //! StartAction only after Undo
nStartAction = GetActionMax() + 1;
StartBlockModify( SC_CTM_APPEND, nStartAction );
- // zu ueberschreibende Contents im ToRange
+ // Contents to overwrite in ToRange
LookUpContents( aRange, pRefDoc, 0, 0, 0 );
pLastCutMove->SetStartLastCut( nStartLastCut );
pLastCutMove->SetEndLastCut( nEndLastCut );
@@ -2854,12 +2856,12 @@ ScChangeActionContent* ScChangeTrack::GenerateDelContent(
ScChangeActionContent* pContent = new ScChangeActionContent(
ScRange( rPos ) );
pContent->SetActionNumber( --nGeneratedMin );
- // nur NewValue
+ // Only NewValue
ScChangeActionContent::SetValue( pContent->maNewValue, pContent->maNewCell,
rPos, rCell, pFromDoc, pDoc );
- // pNextContent und pPrevContent werden nicht gesetzt
+ // pNextContent and pPrevContent are not set
if ( pFirstGeneratedDelContent )
- { // vorne reinhaengen
+ { // Insert at front
pFirstGeneratedDelContent->pPrev = pContent;
pContent->pNext = pFirstGeneratedDelContent;
}
@@ -2882,7 +2884,7 @@ void ScChangeTrack::DeleteGeneratedDelContent( ScChangeActionContent* pContent )
delete pContent;
NotifyModified( SC_CTM_REMOVE, nAct, nAct );
if ( nAct == nGeneratedMin )
- ++nGeneratedMin; //! erst nach NotifyModified wg. IsGenerated
+ ++nGeneratedMin; //! Only after NotifyModified due to IsGenerated
}
ScChangeActionContent* ScChangeTrack::SearchContentAt(
@@ -2917,19 +2919,19 @@ void ScChangeTrack::AddDependentWithNotify( ScChangeAction* pParent,
void ScChangeTrack::Dependencies( ScChangeAction* pAct )
{
- // Finde die letzte Abhaengigkeit fuer jeweils Col/Row/Tab.
- // Content an gleicher Position verketten.
- // Move Abhaengigkeiten.
+ // Find the last dependency for Col/Row/Tab each
+ // Concatenate Content at the same position
+ // Move dependencies
ScChangeActionType eActType = pAct->GetType();
if ( eActType == SC_CAT_REJECT ||
(eActType == SC_CAT_MOVE && pAct->IsRejecting()) )
- return ; // diese Rejects sind nicht abhaengig
+ return ; // These Rejects are not dependant
if ( eActType == SC_CAT_CONTENT )
{
if ( !(((ScChangeActionContent*)pAct)->GetNextContent() ||
((ScChangeActionContent*)pAct)->GetPrevContent()) )
- { // Contents an gleicher Position verketten
+ { // Concatenate Contents at same position
ScChangeActionContent* pContent = SearchContentAt(
pAct->GetBigRange().aStart, pAct );
if ( pContent )
@@ -2956,17 +2958,15 @@ void ScChangeTrack::Dependencies( ScChangeAction* pAct )
}
if ( !(pLinkInsertCol || pLinkInsertRow || pLinkInsertTab || pLinkMove) )
- return ; // keine Dependencies
+ return ; // No Dependencies
if ( pAct->IsRejecting() )
- return ; // ausser Content keine Dependencies
+ return ; // Except for Content no Dependencies
- // Insert in einem entsprechenden Insert haengt davon ab, sonst muesste
- // der vorherige Insert gesplittet werden.
- // Sich kreuzende Inserts und Deletes sind nicht abhaengig.
- // Alles andere ist abhaengig.
-
- // Der zuletzt eingelinkte Insert steht am Anfang einer Kette,
- // also genau richtig
+ // Insert in a corresponding Insert depends on it or else we would need
+ // to split the preceding one.
+ // Intersecting Inserts and Deletes are not dependant, everything else
+ // is dependant.
+ // The Insert last linked in is at the beginning of a chain, just the way we need it
const ScBigRange& rRange = pAct->GetBigRange();
bool bActNoInsert = !pAct->IsInsertType();
@@ -3020,7 +3020,7 @@ void ScChangeTrack::Dependencies( ScChangeAction* pAct )
if ( pLinkMove )
{
if ( eActType == SC_CAT_CONTENT )
- { // Content ist von FromRange abhaengig
+ { // Content is depending on FromRange
const ScBigAddress& rPos = rRange.aStart;
for ( ScChangeActionLinkEntry* pL = pLinkMove; pL; pL = pL->GetNext() )
{
@@ -3033,7 +3033,7 @@ void ScChangeTrack::Dependencies( ScChangeAction* pAct )
}
}
else if ( eActType == SC_CAT_MOVE )
- { // Move FromRange ist von ToRange abhaengig
+ { // Move FromRange is depending on ToRange
const ScBigRange& rFromRange = ((ScChangeActionMove*)pAct)->GetFromRange();
for ( ScChangeActionLinkEntry* pL = pLinkMove; pL; pL = pL->GetNext() )
{
@@ -3046,8 +3046,8 @@ void ScChangeTrack::Dependencies( ScChangeAction* pAct )
}
}
else
- { // Inserts und Deletes sind abhaengig, sobald sie FromRange oder
- // ToRange kreuzen
+ { // Inserts and Deletes are depending as soon as they cross FromRange or
+ // ToRange
for ( ScChangeActionLinkEntry* pL = pLinkMove; pL; pL = pL->GetNext() )
{
ScChangeActionMove* pTest = (ScChangeActionMove*) pL->GetAction();
@@ -3064,7 +3064,7 @@ void ScChangeTrack::Dependencies( ScChangeAction* pAct )
void ScChangeTrack::Remove( ScChangeAction* pRemove )
{
- // aus Track ausklinken
+ // Remove from Track
sal_uLong nAct = pRemove->GetActionNumber();
aMap.erase( nAct );
if ( nAct == nActionMax )
@@ -3077,15 +3077,14 @@ void ScChangeTrack::Remove( ScChangeAction* pRemove )
nMarkLastSaved =
( pRemove->pPrev ? pRemove->pPrev->GetActionNumber() : 0 );
- // aus der globalen Kette ausklinken
+ // Remove from global chain
if ( pRemove->pNext )
pRemove->pNext->pPrev = pRemove->pPrev;
if ( pRemove->pPrev )
pRemove->pPrev->pNext = pRemove->pNext;
- // Dependencies nicht loeschen, passiert on delete automatisch durch
- // LinkEntry, ohne Listen abzuklappern
-
+ // Don't delete Dependencies
+ // That happens automatically on delete by LinkEntry without traversing lists
if ( aModifiedLink.IsSet() )
{
NotifyModified( SC_CTM_REMOVE, nAct, nAct );
@@ -3104,7 +3103,7 @@ void ScChangeTrack::Remove( ScChangeAction* pRemove )
}
if ( IsInPasteCut() && pRemove->GetType() == SC_CAT_CONTENT )
- { //! Content wird wiederverwertet
+ { //! Content is reused
ScChangeActionContent* pContent = (ScChangeActionContent*) pRemove;
pContent->RemoveAllLinks();
pContent->ClearTrack();
@@ -3132,8 +3131,8 @@ void ScChangeTrack::Undo( sal_uLong nStartAction, sal_uLong nEndAction, bool bMe
ResetLastCut();
StartBlockModify( SC_CTM_REMOVE, nStartAction );
for ( sal_uLong j = nEndAction; j >= nStartAction; --j )
- { // rueckwaerts um evtl. nActionMax zu recyclen und schnelleren
- // Zugriff via pLast, Deletes in richtiger Reihenfolge
+ { // Traverse backwards to recycle nActionMax and for faster access via pLast
+ // Deletes are in right order
ScChangeAction* pAct = ( (j == nActionMax && pLast &&
pLast->GetActionNumber() == j) ? pLast : GetAction( j ) );
if ( pAct )
@@ -3161,8 +3160,8 @@ void ScChangeTrack::Undo( sal_uLong nStartAction, sal_uLong nEndAction, bool bMe
sal_uLong nStart = pMove->GetStartLastCut();
sal_uLong nEnd = pMove->GetEndLastCut();
if ( nStart && nStart <= nEnd )
- { // LastCut wiederherstellen
- //! Links vor Cut-Append aufloesen
+ { // Recover LastCut
+ //! Break Links before Cut Append
pMove->RemoveAllLinks();
StartBlockModify( SC_CTM_APPEND, nStart );
for ( sal_uLong nCut = nStart; nCut <= nEnd; nCut++ )
@@ -3209,12 +3208,12 @@ void ScChangeTrack::Undo( sal_uLong nStartAction, sal_uLong nEndAction, bool bMe
bool ScChangeTrack::MergeIgnore( const ScChangeAction& rAction, sal_uLong nFirstMerge )
{
if ( rAction.IsRejected() )
- return true; // da kommt noch eine passende Reject-Action
+ return true; // There's still a suitable Reject Action coming
if ( rAction.IsRejecting() && rAction.GetRejectAction() >= nFirstMerge )
- return true; // da ist sie
+ return true; // There it is
- return false; // alles andere
+ return false; // Everything else
}
void ScChangeTrack::MergePrepare( ScChangeAction* pFirstMerge, bool bShared )
@@ -3226,7 +3225,7 @@ void ScChangeTrack::MergePrepare( ScChangeAction* pFirstMerge, bool bShared )
{
SetLastMerge( pAct->GetActionNumber() );
while ( pAct )
- { // rueckwaerts, Deletes in richtiger Reihenfolge
+ { // Traverse backwards; Deletes in right order
// #i94841# [Collaboration] When deleting rows is rejected, the content is sometimes wrong
if ( bShared || !ScChangeTrack::MergeIgnore( *pAct, nFirstMerge ) )
{
@@ -3241,12 +3240,12 @@ void ScChangeTrack::MergePrepare( ScChangeAction* pFirstMerge, bool bShared )
}
UpdateReference( pAct, true );
SetInDeleteTop( false );
- pAct->DeleteCellEntries(); // sonst GPF bei Track Clear()
+ pAct->DeleteCellEntries(); // Else segfault in Track Clear()
}
pAct = ( pAct == pFirstMerge ? NULL : pAct->GetPrev() );
}
}
- SetMergeState( SC_CTMS_OTHER ); //! nachfolgende per default MergeOther
+ SetMergeState( SC_CTMS_OTHER ); //! Preceding by default MergeOther
}
void ScChangeTrack::MergeOwn( ScChangeAction* pAct, sal_uLong nFirstMerge, bool bShared )
@@ -3266,7 +3265,7 @@ void ScChangeTrack::MergeOwn( ScChangeAction* pAct, sal_uLong nFirstMerge, bool
}
UpdateReference( pAct, false );
SetInDeleteTop( false );
- SetMergeState( SC_CTMS_OTHER ); //! nachfolgende per default MergeOther
+ SetMergeState( SC_CTMS_OTHER ); //! Preceding by default MergeOther
}
}
@@ -3276,12 +3275,13 @@ void ScChangeTrack::UpdateReference( ScChangeAction* pAct, bool bUndo )
if ( eActType == SC_CAT_CONTENT || eActType == SC_CAT_REJECT )
return ;
- //! Formelzellen haengen nicht im Dokument
+ //! Formula cells are not in the Document
bool bOldAutoCalc = pDoc->GetAutoCalc();
pDoc->SetAutoCalc( false );
bool bOldNoListening = pDoc->GetNoListening();
pDoc->SetNoListening( true );
- //! Formelzellen ExpandRefs synchronisiert zu denen im Dokument
+
+ //! Formula cells ExpandRefs synchronized to the ones in the Document
bool bOldExpandRefs = pDoc->IsExpandRefs();
if ( (!bUndo && pAct->IsInsertType()) || (bUndo && pAct->IsDeleteType()) )
pDoc->SetExpandRefs( SC_MOD()->GetInputOptions().GetExpandRefs() );
@@ -3293,13 +3293,13 @@ void ScChangeTrack::UpdateReference( ScChangeAction* pAct, bool bUndo )
}
else if ( GetMergeState() == SC_CTMS_OWN )
{
- // Referenzen von Formelzellen wiederherstellen,
- // vorheriges MergePrepare war bei einem Insert wie ein Delete
+ // Recover references of formula cells
+ // Previous MergePrepare behaved like a Delete when Inserting
if ( pAct->IsInsertType() )
SetInDeleteUndo( true );
}
- //! erst die generated, als waeren sie vorher getrackt worden
+ //! First the generated ones, as if they were tracked previously
if ( pFirstGeneratedDelContent )
UpdateReference( (ScChangeAction**)&pFirstGeneratedDelContent, pAct,
bUndo );
@@ -3372,12 +3372,12 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
nDz = -nDz;
}
if ( bDel )
- { //! fuer diesen Mechanismus gilt:
- //! es gibt nur ganze, einfache geloeschte Spalten/Zeilen
+ { //! For this mechanism we assume:
+ //! There's only a whole, simple deleted row/column
ScChangeActionDel* pActDel = (ScChangeActionDel*) pAct;
if ( !bUndo )
{ // Delete
- ScChangeActionType eInsType = SC_CAT_NONE; // for Insert-Undo-"Deletes"
+ ScChangeActionType eInsType = SC_CAT_NONE; // for Insert Undo "Deletes"
switch ( eActType )
{
case SC_CAT_DELETE_COLS :
@@ -3401,20 +3401,19 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
bool bUpdate = true;
if ( GetMergeState() == SC_CTMS_OTHER &&
p->GetActionNumber() <= GetLastMerge() )
- { // Delete in mergendem Dokument, Action im zu mergenden
+ { // Delete in merged Document, Action in the one to be merged
if ( p->IsInsertType() )
{
- // Bei Insert Referenzen nur anpassen, wenn das Delete
- // das Insert nicht schneidet.
+ // On Insert only adjust references if the Delete does
+ // not intersect the Insert
if ( !aDelRange.Intersects( p->GetBigRange() ) )
p->UpdateReference( this, eMode, aRange, nDx, nDy, nDz );
bUpdate = false;
}
else if ( p->GetType() == SC_CAT_CONTENT &&
p->IsDeletedInDelType( eInsType ) )
- { // Content in Insert-Undo-"Delete"
- // Nicht anpassen, wenn dieses Delete in dem
- // Insert-"Delete" sein wuerde (ist nur verschoben).
+ { // Content in Insert Undo "Delete"
+ // Do not adjust if this Delete would be in the Insert "Delete" (was just moved)
if ( aDelRange.In( p->GetBigRange().aStart ) )
bUpdate = false;
else
@@ -3431,18 +3430,18 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
}
}
if ( !bUpdate )
- continue; // for
+ continue; // for
}
if ( aDelRange.In( p->GetBigRange() ) )
{
- // Innerhalb eines gerade geloeschten Bereiches nicht
- // anpassen, stattdessen dem Bereich zuordnen.
- // Mehrfache geloeschte Bereiche "stapeln".
- // Kreuzende Deletes setzen mehrfach geloescht.
+ // Do not adjust within a just deleted range,
+ // instead assign the range.
+ // Stack up ranges that have been deleted multiple times.
+ // Intersecting Deletes cause "multiple delete" to be set.
if ( !p->IsDeletedInDelType( eActType ) )
{
p->SetDeletedIn( pActDel );
- // GeneratedDelContent in zu loeschende Liste aufnehmen
+ // Add GeneratedDelContent to the to-be-deleted list
if ( bGeneratedDelContents )
pActDel->AddContent( (ScChangeActionContent*) p );
}
@@ -3450,15 +3449,16 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
}
else
{
- // Eingefuegte Bereiche abschneiden, wenn Start/End im
- // Delete liegt, aber das Insert nicht komplett innerhalb
- // des Delete liegt bzw. das Delete nicht komplett im
- // Insert. Das Delete merkt sich, welchem Insert es was
- // abgeschnitten hat, es kann auch nur ein einziges Insert
- // sein (weil Delete einspaltig/einzeilig ist).
- // Abgeschnittene Moves kann es viele geben.
- //! Ein Delete ist immer einspaltig/einzeilig, deswegen 1
- //! ohne die Ueberlappung auszurechnen.
+ // Cut off inserted ranges, if Start/End is within the Delete,
+ // but the Insert is not completely within the Delete or
+ // the Delete is not completelty within the Insert.
+ // The Delete remembers which Insert it has cut off from;
+ // it can also just be a single Insert (because Delete has
+ // a single column/is a single row).
+ // There can be a lot of cut-off Moves.
+ //
+ // ! A Delete is always a single column/a single row, therefore
+ // ! 1 without calculating the intersection.
switch ( p->GetType() )
{
case SC_CAT_INSERT_COLS :
@@ -3601,7 +3601,7 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
if ( p->GetType() == eActType && !p->IsRejected() &&
!pActDel->IsDeletedIn() &&
p->GetBigRange().In( aDelRange ) )
- pActDel->SetDeletedIn( p ); // "druntergerutscht"
+ pActDel->SetDeletedIn( p ); // Slipped underneath it
}
}
}
@@ -3629,24 +3629,22 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
{
if ( p->GetType() != SC_CAT_CONTENT ||
((ScChangeActionContent*)p)->IsTopContent() )
- { // erst der TopContent wird wirklich entfernt
+ { // First really remove the TopContent
p->RemoveDeletedIn( pActDel );
- // GeneratedDelContent _nicht_ aus Liste loeschen,
- // wir brauchen ihn evtl. noch fuer Reject,
- // geloescht wird in DeleteCellEntries
+ // Do NOT delete GeneratedDelContent from the list, we might need
+ // it later on for Reject; we delete in DeleteCellEntries
}
}
bUpdate = false;
}
else if ( eActType != SC_CAT_DELETE_TABS &&
p->IsDeletedInDelType( SC_CAT_DELETE_TABS ) )
- { // in geloeschten Tabellen nicht updaten,
- // ausser wenn Tabelle verschoben wird
+ { // Do not update in deleted Tables except for when moving Tables
bUpdate = false;
}
if ( p->GetType() == eActType && pActDel->IsDeletedIn( p ) )
{
- pActDel->RemoveDeletedIn( p ); // "druntergerutscht"
+ pActDel->RemoveDeletedIn( p );// Slipped underneath
bUpdate = true;
}
}
@@ -3654,7 +3652,7 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
p->UpdateReference( this, eMode, aRange, nDx, nDy, nDz );
}
if ( !bGeneratedDelContents )
- { // die werden sonst noch fuer das echte Undo gebraucht
+ { // These are else also needed for the real Undo
pActDel->UndoCutOffInsert();
pActDel->UndoCutOffMoves();
}
@@ -3671,16 +3669,16 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
for ( ScChangeAction* p = *ppFirstAction; p; p = p->GetNext() )
{
if ( p == pAct )
- continue; // for
+ continue; // for
if ( p->GetType() == SC_CAT_CONTENT )
{
- // Inhalt in Ziel deleten (Inhalt in Quelle moven)
+ // Delete content in Target (Move Content to Source)
if ( rTo.In( p->GetBigRange() ) )
{
if ( !p->IsDeletedIn( pActMove ) )
{
p->SetDeletedIn( pActMove );
- // GeneratedDelContent in zu loeschende Liste aufnehmen
+ // Add GeneratedDelContent to the to-be-deleted list
if ( bGeneratedDelContents )
pActMove->AddContent( (ScChangeActionContent*) p );
}
@@ -3688,20 +3686,20 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
else if ( bLastCutMove &&
p->GetActionNumber() > nEndLastCut &&
rFrom.In( p->GetBigRange() ) )
- { // Paste Cut: neuer Content nach Cut eingefuegt, bleibt.
- // Aufsplitten der ContentChain
+ { // Paste Cut: insert new Content inserted after stays
+ // Split up the ContentChain
ScChangeActionContent *pHere, *pTmp;
pHere = (ScChangeActionContent*) p;
while ( (pTmp = pHere->GetPrevContent()) != NULL &&
pTmp->GetActionNumber() > nEndLastCut )
pHere = pTmp;
if ( pTmp )
- { // wird TopContent des Move
+ { // Becomes TopContent of the Move
pTmp->SetNextContent( NULL );
pHere->SetPrevContent( NULL );
}
do
- { // Abhaengigkeit vom FromRange herstellen
+ { // Recover dependency from FromRange
AddDependentWithNotify( pActMove, pHere );
} while ( ( pHere = pHere->GetNextContent() ) != NULL );
}
@@ -3720,15 +3718,14 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
continue; // for
if ( p->GetType() == SC_CAT_CONTENT )
{
- // Inhalt in Ziel moven, wenn nicht deleted, sonst undelete
+ // Move Content into Target if not deleted else to delete (FIXME: What?)
if ( p->IsDeletedIn( pActMove ) )
{
if ( ((ScChangeActionContent*)p)->IsTopContent() )
- { // erst der TopContent wird wirklich entfernt
+ { // First really remove the TopContent
p->RemoveDeletedIn( pActMove );
- // GeneratedDelContent _nicht_ aus Liste loeschen,
- // wir brauchen ihn evtl. noch fuer Reject,
- // geloescht wird in DeleteCellEntries
+ // Do NOT delete GeneratedDelContent from the list, we might need
+ // it later on for Reject; we delete in DeleteCellEntries
}
}
// #i87003# [Collaboration] Move range and insert content in FromRange is not merged correctly
@@ -3737,7 +3734,7 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
if ( bActRejected &&
((ScChangeActionContent*)p)->IsTopContent() &&
rFrom.In( p->GetBigRange() ) )
- { // Abhaengigkeit herstellen, um Content zu schreiben
+ { // Recover dependency to write Content
ScChangeActionLinkEntry* pLink =
pActMove->AddDependent( p );
p->AddLink( pActMove, pLink );
@@ -3747,7 +3744,7 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
}
}
else
- { // Insert / Undo Insert
+ { // Insert/Undo Insert
switch ( GetMergeState() )
{
case SC_CTMS_NONE :
@@ -3763,7 +3760,7 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
break;
case SC_CTMS_PREPARE :
{
- // in Insert-Undo "Deleten"
+ // "Delete" in Insert-Undo
const ScChangeActionLinkEntry* pLink = pAct->GetFirstDependentEntry();
while ( pLink )
{
@@ -3813,7 +3810,7 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
p->UpdateReference( this, eMode, aRange, nDx, nDy, nDz );
}
}
- // in Insert-Undo "Delete" rueckgaengig
+ // Undo "Delete" in Insert-Undo
const ScChangeActionLinkEntry* pLink = pAct->GetFirstDependentEntry();
while ( pLink )
{
@@ -3873,9 +3870,8 @@ void ScChangeTrack::UpdateReference( ScChangeAction** ppFirstAction,
void ScChangeTrack::GetDependents( ScChangeAction* pAct,
ScChangeActionMap& rMap, bool bListMasterDelete, bool bAllFlat ) const
{
- //! bAllFlat==TRUE: intern aus Accept oder Reject gerufen,
- //! => Generated werden nicht aufgenommen
-
+ //! bAllFlat==TRUE: called internally from Accept or Reject
+ //! => Generated will not be added
bool bIsDelete = pAct->IsDeleteType();
bool bIsMasterDelete = ( bListMasterDelete && pAct->IsMasterDelete() );
@@ -3920,12 +3916,12 @@ void ScChangeTrack::GetDependents( ScChangeAction* pAct,
else if ( pCur->IsDeleteType() )
{
if ( bIsDelete )
- { // Inhalte geloeschter Bereiche interessieren nur bei Delete
+ { // Contents of deleted Ranges are only of interest on Delete
ScChangeActionDel* pDel = (ScChangeActionDel*) pCur;
if ( !bAllFlat && bIsMasterDelete && pCur == pAct )
{
- // zu diesem Delete gehoerende Deletes in gleiche Ebene,
- // wenn dieses Delete das momentan oberste einer Reihe ist,
+ // Corresponding Deletes to this Delete to the same level,
+ // if this Delete is at the top of a Row
ScChangeActionType eType = pDel->GetType();
ScChangeAction* p = pDel;
while ( (p = p->GetPrev()) != NULL && p->GetType() == eType &&
@@ -3944,7 +3940,7 @@ void ScChangeTrack::GetDependents( ScChangeAction* pAct,
{
if ( bAllFlat )
{
- // nur ein TopContent einer Kette ist in LinkDeleted
+ // Only a TopContent of a chain is in LinkDeleted
sal_uLong n = p->GetActionNumber();
if ( !IsGenerated( n ) && rMap.insert( ::std::make_pair( n, p ) ).second )
if ( p->HasDeleted() ||
@@ -3954,8 +3950,7 @@ void ScChangeTrack::GetDependents( ScChangeAction* pAct,
else
{
if ( p->IsDeleteType() )
- { // weiteres TopDelete in gleiche Ebene,
- // es ist nicht rejectable
+ { // Further TopDeletes to same level: it's not rejectable
if ( ((ScChangeActionDel*)p)->IsTopDelete() )
rMap.insert( ::std::make_pair( p->GetActionNumber(), p ) );
}
@@ -3970,22 +3965,22 @@ void ScChangeTrack::GetDependents( ScChangeAction* pAct,
}
else if ( pCur->GetType() == SC_CAT_MOVE )
{
- // geloeschte Contents im ToRange
+ // Deleted Contents in ToRange
const ScChangeActionLinkEntry* pL = pCur->GetFirstDeletedEntry();
while ( pL )
{
ScChangeAction* p = (ScChangeAction*) pL->GetAction();
if ( p != pAct && rMap.insert( ::std::make_pair( p->GetActionNumber(), p ) ).second )
{
- // nur ein TopContent einer Kette ist in LinkDeleted
+ // Only one TopContent of a chain is in LinkDeleted
if ( bAllFlat && (p->HasDeleted() ||
p->GetType() == SC_CAT_CONTENT) )
cStack.push( p );
}
pL = pL->GetNext();
}
- // neue Contents im FromRange oder neuer FromRange im ToRange
- // oder Inserts/Deletes in FromRange/ToRange
+ // New Contents in FromRange or new FromRange in ToRange
+ // or Inserts/Deletes in FromRange/ToRange
pL = pCur->GetFirstDependentEntry();
while ( pL )
{
@@ -4014,16 +4009,16 @@ void ScChangeTrack::GetDependents( ScChangeAction* pAct,
}
}
else if ( pCur->GetType() == SC_CAT_CONTENT )
- { // alle Aenderungen an gleicher Position
+ { // All changes at same position
ScChangeActionContent* pContent = (ScChangeActionContent*) pCur;
- // alle vorherigen
+ // All preceding ones
while ( ( pContent = pContent->GetPrevContent() ) != NULL )
{
if ( !pContent->IsRejected() )
rMap.insert( ::std::make_pair( pContent->GetActionNumber(), pContent ) );
}
pContent = (ScChangeActionContent*) pCur;
- // alle nachfolgenden
+ // All succeeding ones
while ( ( pContent = pContent->GetNextContent() ) != NULL )
{
if ( !pContent->IsRejected() )
@@ -4176,7 +4171,7 @@ bool ScChangeTrack::RejectAll()
{
bool bOk = true;
for ( ScChangeAction* p = GetLast(); p && bOk; p = p->GetPrev() )
- { //! rueckwaerts, weil abhaengige hinten und RejectActions angehaengt
+ { //! Traverse backwards as dependencies attached to RejectActions
if ( p->IsInternalRejectable() )
bOk = Reject( p );
}
@@ -4222,18 +4217,18 @@ bool ScChangeTrack::Reject(
for (itChangeAction = pMap->rbegin();
itChangeAction != pMap->rend() && bOk; ++itChangeAction)
{
- // keine Contents restoren, die eh geloescht werden wuerden
+ // Do not restore Contents which would end up being deleted anyways
if ( itChangeAction->second->GetType() == SC_CAT_CONTENT )
itChangeAction->second->SetRejected();
else if ( itChangeAction->second->IsDeleteType() )
- itChangeAction->second->Accept(); // geloeschtes ins Nirvana
+ itChangeAction->second->Accept(); // Deleted to Nirvana
else
- bOk = Reject( itChangeAction->second, NULL, true ); //! rekursiv
+ bOk = Reject( itChangeAction->second, NULL, true ); //! Recursion
}
}
if ( bOk && (bRejected = pAct->Reject( pDoc )) != false )
{
- // pRefDoc NULL := geloeschte Zellen nicht speichern
+ // pRefDoc NULL := Do not save deleted Cells
AppendDeleteRange( pAct->GetBigRange().MakeRange(), NULL, (short) 0,
pAct->GetActionNumber() );
}
@@ -4324,7 +4319,7 @@ bool ScChangeTrack::Reject(
bRejected = bOk;
if ( bOneOk || (bTabDel && bTabDelOk) )
{
- // Delete-Reject machte UpdateReference Undo
+ // Delete Reject made UpdateReference Undo
ScChangeActionIns* pReject = new ScChangeActionIns(
aDelRange.MakeRange() );
pReject->SetRejectAction( nRejectAction );
@@ -4341,7 +4336,7 @@ bool ScChangeTrack::Reject(
for( itChangeAction = pMap->rbegin(); itChangeAction != pMap->rend() && bOk; ++itChangeAction )
{
- bOk = Reject( itChangeAction->second, NULL, true ); //! rekursiv
+ bOk = Reject( itChangeAction->second, NULL, true );//! Recursion
}
}
if ( bOk && (bRejected = pAct->Reject( pDoc )) != false )