[Libreoffice-commits] core.git: sc/source

Philipp Weissenbacher p.weissenbacher at gmail.com
Thu Nov 14 07:31:49 PST 2013


 sc/source/core/tool/chartarr.cxx |   23 --
 sc/source/core/tool/chartpos.cxx |   48 ++--
 sc/source/core/tool/chgtrack.cxx |  399 +++++++++++++++++++--------------------
 3 files changed, 233 insertions(+), 237 deletions(-)

New commits:
commit 9964dbdda0dd8bb0471a3153ce133a76e98a09b0
Author: Philipp Weissenbacher <p.weissenbacher at gmail.com>
Date:   Thu Nov 14 12:46:35 2013 +0100

    Translate German comments
    
    Change-Id: I79abdb853af619f2c66638bde990ef8ae33fe492
    Reviewed-on: https://gerrit.libreoffice.org/6671
    Reviewed-by: Norbert Thiebaud <nthiebaud at gmail.com>
    Tested-by: Norbert Thiebaud <nthiebaud at gmail.com>

diff --git a/sc/source/core/tool/chartarr.cxx b/sc/source/core/tool/chartarr.cxx
index a60e361..627068a 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 4871945..a64c5ff 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 901ca52..87d0cdb 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 )


More information about the Libreoffice-commits mailing list