[Libreoffice-commits] .: 2 commits - sw/source

Thorsten Behrens thorsten at kemper.freedesktop.org
Fri Feb 17 17:44:28 PST 2012


 sw/source/core/layout/layact.cxx  |  256 +++++++++++------------
 sw/source/core/layout/sectfrm.cxx |  421 ++++++++++++++++++--------------------
 2 files changed, 330 insertions(+), 347 deletions(-)

New commits:
commit 3d441e6d31c13a0cc48b3a26880b9ae65a05c00a
Author: David Vogt <david.vogt at adfinis-sygroup.ch>
Date:   Thu Feb 16 19:14:20 2012 +0100

    Translated German comments to English

diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 1978093..9b6ac9b 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -46,8 +46,8 @@
 #include "ndtxt.hxx"    // OnlineSpelling
 #include "frmfmt.hxx"
 #include "swregion.hxx"
-#include "viewopt.hxx"  // OnlineSpelling ueber Internal-TabPage testen.
-#include "pam.hxx"      // OnlineSpelling wg. der aktuellen Cursorposition
+#include "viewopt.hxx"  // test OnlineSpelling using internal TabPage
+#include "pam.hxx"      // OnlineSpelling needed because of the current cursor position
 #include "dbg_lay.hxx"
 #include "layouter.hxx" // LoopControlling
 #include "docstat.hxx"
@@ -93,7 +93,7 @@
 
 /*************************************************************************
 |*
-|*  SwLayAction Statisches Geraffel
+|*  SwLayAction static stuff
 |*
 |*************************************************************************/
 
@@ -101,7 +101,7 @@
 #define IS_INVAFLY (pPage->IsInvalidFly())
 
 
-//Sparen von Schreibarbeit um den Zugriff auf zerstoerte Seiten zu vermeiden.
+// Save some typing work to avoid accessing destroyed pages.
 #if OSL_DEBUG_LEVEL > 1
 
 static void BreakPoint()
@@ -169,7 +169,7 @@ void SwLayAction::CheckWaitCrsr()
 |*  SwLayAction::CheckIdleEnd()
 |*
 |*************************************************************************/
-//Ist es wirklich schon soweit...
+// Time over already?
 inline void SwLayAction::CheckIdleEnd()
 {
     if ( !IsInput() )
@@ -196,10 +196,10 @@ void SwLayAction::SetStatBar( sal_Bool bNew )
 |*
 |*  SwLayAction::PaintCntnt()
 |*
-|*  Beschreibung        Je nach Typ wird der Cntnt entsprechend seinen
-|*      Veraenderungen ausgegeben bzw. wird die auszugebende Flaeche in der
-|*      Region eingetragen.
-|*      PaintCntnt:  fuellt die Region,
+|*  Description        Depending of the type, the Cntnt is output
+|*      according to it's changes, or the area to be outputted is
+|*      registered with the region, respectively.
+|*      PaintCntnt: fills the region
 |*
 |*************************************************************************/
 sal_Bool SwLayAction::PaintWithoutFlys( const SwRect &rRect, const SwCntntFrm *pCnt,
@@ -240,15 +240,15 @@ sal_Bool SwLayAction::PaintWithoutFlys( const SwRect &rRect, const SwCntntFrm *p
             if ( pO->GetLayer() == pTmp->GetLayer() )
             {
                 if ( pO->GetOrdNumDirect() < pTmp->GetOrdNumDirect() )
-                    //Im gleichen Layer werden nur obenliegende beachtet.
+                    // Only look at things above us, if inside the same layer
                     continue;
             }
             else
             {
                 const sal_Bool bLowerOfSelf = pFly->IsLowerOf( pSelfFly );
                 if ( !bLowerOfSelf && !pFly->GetFmt()->GetOpaque().GetValue() )
-                    //Aus anderem Layer interessieren uns nur nicht transparente
-                    //oder innenliegende
+                    // Things from other layers are only interesting to us if
+                    // they're not transparent or lie inwards
                     continue;
             }
         }
@@ -374,13 +374,13 @@ SwLayAction::SwLayAction( SwRootFrm *pRt, SwViewImp *pI ) :
     // OD 14.04.2003 #106346# - init new flag <mbFormatCntntOnInterrupt>.
     mbFormatCntntOnInterrupt = sal_False;
 
-    pImp->pLayAct = this;   //Anmelden
+    pImp->pLayAct = this;   // register there
 }
 
 SwLayAction::~SwLayAction()
 {
     OSL_ENSURE( !pWait, "Wait object not destroyed" );
-    pImp->pLayAct = 0;      //Abmelden
+    pImp->pLayAct = 0;      // unregister
 }
 
 /*************************************************************************
@@ -442,7 +442,7 @@ void SwLayAction::Action()
 {
     bActionInProgress = sal_True;
 
-    //TurboMode? Disqualifiziert fuer Idle-Format.
+    //TurboMode? Hands-off during idle-format
     if ( IsPaint() && !IsIdle() && TurboAction() )
     {
         delete pWait, pWait = 0;
@@ -475,7 +475,7 @@ void SwLayAction::Action()
 
     delete pWait, pWait = 0;
 
-    //Turbo-Action ist auf jedenfall wieder erlaubt.
+    //Turbo-Action permitted again for all cases.
     pRoot->ResetTurboFlag();
     pRoot->ResetTurbo();
 
@@ -509,7 +509,7 @@ SwPageFrm* SwLayAction::CheckFirstVisPage( SwPageFrm *pPage )
             {
                 if ( bPageChgd )
                 {
-                    //Die 'oberste' Seite benutzten.
+                    // Use the 'topmost' page
                     SwPageFrm *pTmp = pCnt->FindPageFrm();
                     if ( pPage->GetPhyPageNum() > pTmp->GetPhyPageNum() )
                         pPage = pTmp;
@@ -559,23 +559,22 @@ class NotifyLayoutOfPageInProgress
 
 void SwLayAction::InternalAction()
 {
-    OSL_ENSURE( pRoot->Lower()->IsPageFrm(), ":-( Keine Seite unterhalb der Root.");
+    OSL_ENSURE( pRoot->Lower()->IsPageFrm(), ":-( No page below the root.");
 
     pRoot->Calc();
 
-    //Die erste ungueltige bzw. zu formatierende Seite ermitteln.
-    //Bei einer Complete-Action ist es die erste ungueltige; mithin ist die
-    //erste zu formatierende Seite diejenige Seite mit der Numemr eins.
-    //Bei einer Luegen-Formatierung ist die Nummer der erste Seite die Nummer
-    //der ersten Sichtbaren Seite.
+    // Figure out the first invalid page or the first one to be formatted,
+    // respectively. A complete-action means the first invalid page.
+    // However, the first page to be formatted might be the one having the
+    // number 1.  If we're doing a fake formatting, the number of the first
+    // page is the number of the first visible page.
     SwPageFrm *pPage = IsComplete() ? (SwPageFrm*)pRoot->Lower() :
                 pImp->GetFirstVisPage();
     if ( !pPage )
         pPage = (SwPageFrm*)pRoot->Lower();
 
-    //Wenn ein "Erster-Fliess-Cntnt" innerhalb der der ersten sichtbaren Seite
-    //ein Follow ist, so schalten wir die Seite zurueck auf den Ur-Master dieses
-    //Cntnt's
+    // If there's a first-flow-Cntnt in the first visible page that's also a Follow,
+    // we switch the page back to the original master of that Cntnt.
     if ( !IsComplete() )
         pPage = CheckFirstVisPage( pPage );
     sal_uInt16 nFirstPageNum = pPage->GetPhyPageNum();
@@ -617,7 +616,7 @@ void SwLayAction::InternalAction()
             ::SetProgressState( nPercentPageNum, pImp->GetShell()->GetDoc()->GetDocShell());
         }
         pOptTab = 0;
-             //Kein ShortCut fuer Idle oder CalcLayout
+             // No Shortcut for Idle or CalcLayout
         if ( !IsIdle() && !IsComplete() && IsShortCut( pPage ) )
         {
             pRoot->DeleteEmptySct();
@@ -665,8 +664,7 @@ void SwLayAction::InternalAction()
                     SwObjectFormatter::FormatObjsAtFrm( *pPage, *pPage, this );
                     if ( !IS_FLYS )
                     {
-                        //Wenn keine Flys (mehr) da sind, sind die Flags
-                        //mehr als fluessig.
+                        // If there are no (more) Flys, the flags are superfluous.
                         pPage->ValidateFlyLayout();
                         pPage->ValidateFlyCntnt();
                     }
@@ -724,12 +722,11 @@ void SwLayAction::InternalAction()
             } // end of scope for instance of class <NotifyLayoutOfPageInProgress>
 
 
-            //Eine vorige Seite kann wieder invalid sein.
+            // A previous page may be invalid again.
             XCHECKPAGE;
             if ( !IS_FLYS )
             {
-                //Wenn keine Flys (mehr) da sind, sind die Flags
-                //mehr als fluessig.
+                // If there are no (more) Flys, the flags are superfluous.
                 pPage->ValidateFlyLayout();
                 pPage->ValidateFlyCntnt();
             }
@@ -765,7 +762,7 @@ void SwLayAction::InternalAction()
                     pPage = (SwPageFrm*)pPage->GetPrev();
                 }
 
-                //Weiter bis zur naechsten invaliden Seite.
+                // Continue to the next invalid page
                 while ( pPage && !pPage->IsInvalid() &&
                         (!IS_FLYS || !IS_INVAFLY) )
                 {
@@ -803,21 +800,22 @@ void SwLayAction::InternalAction()
     }
     if ( IsInterrupt() && pPage )
     {
-        //Wenn ein Input anliegt wollen wir keinen Inhalt mehr Formatieren,
-        //Das Layout muessen wir aber schon in Ordnung bringen.
-        //Andernfalls kann folgende Situation auftreten (Bug: 3244):
-        //Am Ende des Absatz der letzten Seite wird Text eingegeben, so das
-        //der Absatz einen Follow fuer die nachste Seite erzeugt, ausserdem
-        //wird gleich schnell weitergetippt - Es liegt waehrend der
-        //Verarbeitung ein Input an. Der Absatz auf der neuen Seite wurde
-        //bereits anformatiert, die neue Seite ist Formatiert und steht
-        //auf CompletePaint, hat sich aber noch nicht im Auszugebenden Bereich
-        //eingetragen. Es wird gepaintet, das CompletePaint der Seite wird
-        //zurueckgesetzt weil der neue Absatz sich bereits eingetragen hatte,
-        //aber die Raender der Seite werden nicht gepaintet. Naja, bei der
-        //zwangslaeufig auftretenden naechsten LayAction traegt sich die Seite
-        //nicht mehr ein, weil ihre (LayoutFrm-)Flags bereits zurueckgesetzt
-        //wurden -- Der Rand der Seite wird nie gepaintet.
+        // If we have input, we don't want to format content anymore, but
+        // we still should clean the layout.
+        // Otherwise, the following situation might arise:
+        // The user enters some text at the end of the paragraph of the last
+        // page, causing the paragraph to create a Follow for the next page.
+        // Meanwhile the user continues typing, so we have input while
+        // still formatting.
+        // The paragraph on the new page has already been partially formatted,
+        // and the new page has been fully formatted and is set to CompletePaint,
+        // but hasn't added itself to the area to be output. Then we paint,
+        // the CompletePaint of the page is reset because the new paragraph
+        // already added itself, but the borders of the page haven't been painted
+        // yet.
+        // Oh well, with the inevitable following LayAction, the page doesn't
+        // register itself, because it's (LayoutFrm) flags have been reset
+        // already - the border of the page will never be painted.
         SwPageFrm *pPg = pPage;
         XCHECKPAGE;
         const SwRect &rVis = pImp->GetShell()->VisArea();
@@ -950,11 +948,10 @@ sal_Bool SwLayAction::_TurboAction( const SwCntntFrm *pCnt )
             {
                 if ( IsPaintExtraData() )
                     pImp->GetShell()->AddPaintRect( pCnt->Frm() );
-                //Damit die restlichen LineNums auf der Seite bereichnet werden
-                //und nicht hier abgebrochen wird.
-                //Das im RecalcAllLines zu erledigen waere teuer, weil dort
-                //auch in unnoetigen Faellen (normale Action) auch immer die
-                //Seite benachrichtigt werden muesste.
+                // This is to calculate the remaining LineNums on the page,
+                // and we don't stop processing here. To perform this inside RecalcAllLines
+                // would be expensive, because we would have to notify the page even
+                // in unnecessary cases (normal actions).
                 const SwCntntFrm *pNxt = pCnt->GetNextCntntFrm();
                 while ( pNxt &&
                         (pNxt->IsInTab() || pNxt->IsInDocBody() != pCnt->IsInDocBody()) )
@@ -1005,15 +1002,13 @@ sal_Bool SwLayAction::TurboAction()
 |*
 |*  SwLayAction::IsShortCut()
 |*
-|*  Beschreibung:       Liefert ein True, wenn die Seite vollstaendig unter
-|*      oder rechts neben dem sichbaren Bereich liegt.
-|*      Es kann passieren, dass sich die Verhaeltnisse derart aendern, dass
-|*      die Verarbeitung (des Aufrufers!) mit der Vorgaengerseite der
-|*      uebergebenen Seite weitergefuehrt werden muss. Der Paramter wird also
-|*      ggf. veraendert!
-|*      Fuer den BrowseMode kann auch dann der ShortCut aktiviert werden,
-|*      wenn der ungueltige Inhalt der Seite unterhalb des sichbaren
-|*      bereiches liegt.
+|*  Description:       Returns True if the page lies directly below or
+|*      right of the visible area.
+|*      It's possible for things to change in such a way that the processing
+|*      (of the caller!) has to continue with the predecessor of the passed
+|*      page. The parameter might therefore get modified!
+|*      For BrowseMode, you may even activate the ShortCut if the invalid
+|*      content of the page lies below the visible area.
 |*
 |*************************************************************************/
 static bool lcl_IsInvaLay( const SwFrm *pFrm, long nBottom )
@@ -1136,8 +1131,8 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
     const ViewShell *pSh = pRoot->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
 
-    //Wenn die Seite nicht Gueltig ist wird sie schnell formatiert, sonst
-    //gibts nix als Aerger.
+    // If the page is not valid, we quickly format it, otherwise
+    // there's gonna be no end of trouble
     if ( !prPage->IsValid() )
     {
         if ( bBrowse )
@@ -1168,17 +1163,16 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
     {
         bRet = sal_True;
 
-        //Jetzt wird es ein bischen unangenehm: Der erste CntntFrm dieser Seite
-        //im Bodytext muss Formatiert werden, wenn er dabei die Seite
-        //wechselt, muss ich nochmal eine Seite zuvor anfangen, denn
-        //es wurde ein PageBreak verarbeitet.
-//Noch unangenehmer: Der naechste CntntFrm ueberhaupt muss
-        //Formatiert werden, denn es kann passieren, dass kurzfristig
-        //leere Seiten existieren (Bsp. Absatz ueber mehrere Seiten
-        //wird geloescht oder verkleinert).
+        // This is going to be a bit nasty: The first CntntFrm of this
+        // page in the Body text needs formatting; if it changes the page during
+        // that process, I need to start over a page further back, because we
+        // have been processing a PageBreak.
+        // Even more uncomfortable: The next CntntFrm must be formatted,
+        // because it's possible for empty pages to exist temporarily (for example
+        // a paragraph across multiple pages gets deleted or reduced in size).
 
-        //Ist fuer den Browser uninteressant, wenn der letzte Cnt davor bereits
-        //nicht mehr sichbar ist.
+        // This is irrelevant for the browser, if the last Cnt above it
+        // isn't visible anymore.
 
         const SwPageFrm *p2ndPage = prPage;
         const SwCntntFrm *pCntnt;
@@ -1202,7 +1196,7 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
             sal_Bool bTstCnt = sal_True;
             if ( bBrowse )
             {
-                //Der Cnt davor schon nicht mehr sichtbar?
+                // Is the Cnt before already invisible?
                 const SwFrm *pLst = pCntnt;
                 if ( pLst->IsInTab() )
                     pLst = pCntnt->FindTabFrm();
@@ -1357,7 +1351,7 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
 // OD 15.11.2002 #105155# - introduce support for vertical layout
 sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
 {
-    OSL_ENSURE( !IsAgain(), "Ungueltige Seite beachten." );
+    OSL_ENSURE( !IsAgain(), "Attention to the invalid page." );
     if ( IsAgain() )
         return sal_False;
 
@@ -1388,7 +1382,7 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
              pLay->Lower() )
         {
             const ViewShell *pSh = pLay->getRootFrm()->GetCurrShell();
-            //Einschraenkungen wegen Kopf-/Fusszeilen
+            // Limitations because of headers / footers
             if( pSh && pSh->GetViewOptions()->getBrowseMode() &&
                 !( pLay->IsCompletePaint() && pLay->FindPageFrm()->FindFtnCont() ) )
                 bNoPaint = sal_True;
@@ -1415,7 +1409,7 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
             if( bPageInBrowseMode )
             {
                 // NOTE: no vertical layout in online layout
-                //Ist die Aenderung ueberhaupt sichtbar?
+                // Is the change even visible?
                 if ( pLay->IsCompletePaint() )
                 {
                     pImp->GetShell()->AddPaintRect( aPaint );
@@ -1523,9 +1517,9 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
     if ( IsAgain() )
         return sal_False;
 
-    //Jetzt noch diejenigen Lowers versorgen die LayoutFrm's sind
+    // Now, deal with the lowers that are LayoutFrms
 
-    if ( pLay->IsFtnFrm() ) //Hat keine LayFrms als Lower.
+    if ( pLay->IsFtnFrm() ) // no LayFrms as Lower
         return bChanged;
 
     SwFrm *pLow = pLay->Lower();
@@ -1536,13 +1530,13 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
         {
             if ( pLow->IsTabFrm() )
                 bTabChanged |= FormatLayoutTab( (SwTabFrm*)pLow, bAddRect );
-            // bereits zum Loeschen angemeldete Ueberspringen
+            // Skip the ones already registered for deletion
             else if( !pLow->IsSctFrm() || ((SwSectionFrm*)pLow)->GetSection() )
                 bChanged |= FormatLayout( (SwLayoutFrm*)pLow, bAddRect );
         }
         else if ( pImp->GetShell()->IsPaintLocked() )
-            //Abkuerzung im die Zyklen zu minimieren, bei Lock kommt das
-            //Paint sowieso (Primaer fuer Browse)
+            // Shortcut to minimize the cycles. With Lock, the
+            // paint is coming either way (primarily for browse)
             pLow->OptCalc();
 
         if ( IsAgain() )
@@ -1566,7 +1560,7 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
 
 sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
 {
-    OSL_ENSURE( !IsAgain(), "Ungueltige Seite beachten." );
+    OSL_ENSURE( !IsAgain(), "Attention to the invalid page." );
     if ( IsAgain() )
         return sal_False;
 
@@ -1575,7 +1569,7 @@ sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
 
     if ( !pFly->IsValid() || pFly->IsCompletePaint() || pFly->IsInvalid() )
     {
-        //Der Frame hat sich veraendert, er wird jetzt Formatiert
+        // The Frame has changed, now it's getting formatted.
         const SwRect aOldRect( pFly->Frm() );
         pFly->Calc();
         bChanged = aOldRect != pFly->Frm();
@@ -1603,7 +1597,7 @@ sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
     if ( IsAgain() )
         return sal_False;
 
-    //Jetzt noch diejenigen Lowers versorgen die LayoutFrm's sind
+    // Now, deal with the lowers that are LayoutFrms
     sal_Bool bTabChanged = false;
     SwFrm *pLow = pFly->Lower();
     while ( pLow )
@@ -1624,7 +1618,7 @@ sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
 // Implement vertical layout support
 sal_Bool SwLayAction::FormatLayoutTab( SwTabFrm *pTab, sal_Bool bAddRect )
 {
-    OSL_ENSURE( !IsAgain(), "8-) Ungueltige Seite beachten." );
+    OSL_ENSURE( !IsAgain(), "8-) Attention to the invalid page." );
     if ( IsAgain() || !pTab->Lower() )
         return sal_False;
 
@@ -1740,12 +1734,12 @@ sal_Bool SwLayAction::FormatLayoutTab( SwTabFrm *pTab, sal_Bool bAddRect )
 
     pTimerAccess->UnblockIdling();
 
-    //Heftige Abkuerzung!
+    // Ugly shortcut!
     if ( pTab->IsLowersFormatted() &&
          (bPainted || !pImp->GetShell()->VisArea().IsOver( pTab->Frm())) )
         return sal_False;
 
-    //Jetzt noch die Lowers versorgen
+    // Now, deal with the lowers
     if ( IsAgain() )
         return sal_False;
 
@@ -1783,13 +1777,12 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
 
     while ( pCntnt && pPage->IsAnLower( pCntnt ) )
     {
-        //Wenn der Cntnt sich eh nicht veraendert koennen wir ein paar
-        //Abkuerzungen nutzen.
+        // If the Cntnt didn't change, we can use a few shortcuts.
         const sal_Bool bFull = !pCntnt->IsValid() || pCntnt->IsCompletePaint() ||
                            pCntnt->IsRetouche() || pCntnt->GetDrawObjs();
         if ( bFull )
         {
-            //Damit wir nacher nicht suchen muessen.
+            // We do this so we don't have to search later on.
             const sal_Bool bNxtCnt = IsCalcLayout() && !pCntnt->GetFollow();
             const SwCntntFrm *pCntntNext = bNxtCnt ? pCntnt->GetNextCntntFrm() : 0;
             const SwCntntFrm *pCntntPrev = pCntnt->GetPrev() ? pCntnt->GetPrevCntntFrm() : 0;
@@ -1830,11 +1823,11 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
             if ( IsAgain() )
                 return sal_False;
 
-            //Wenn Layout oder Flys wieder Invalid sind breche ich die Verarbeitung
-            //vorlaeufig ab - allerdings nicht fuer die BrowseView, denn dort wird
-            //das Layout staendig ungueltig, weil die Seitenhoehe angepasst wird.
-            //Desgleichen wenn der Benutzer weiterarbeiten will und mindestens ein
-            //Absatz verarbeitet wurde.
+            // Temporarily interrupt processing if layout or Flys become invalid again.
+            // However not for the BrowseView: The layout is getting invalid
+            // all the time because the page height gets adjusted.
+            // The same applies if the user wants to continue working and at least one
+            // paragraph has been processed.
             if ( (!pTab || (pTab && !bInValid)) )
             {
                 CheckIdleEnd();
@@ -1852,8 +1845,8 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
                 if (  nCurNum < pPage->GetPhyPageNum() )
                     nPreInvaPage = nCurNum;
 
-                //Wenn der Frm mehr als eine Seite rueckwaerts geflossen ist, so
-                //fangen wir nocheinmal von vorn an damit wir nichts auslassen.
+                // If the Frm flowed backwards more than one page, we need to
+                // start over again from the beginning, so nothing gets left out.
                 if ( !IsCalcLayout() && pPage->GetPhyPageNum() > nCurNum+1 )
                 {
                     SetNextCycle( sal_True );
@@ -1864,11 +1857,10 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
                     }
                 }
             }
-            //Wenn der Frame die Seite vorwaerts gewechselt hat, so lassen wir
-            //den Vorgaenger nocheinmal durchlaufen.
-            //So werden einerseits Vorgaenger erwischt, die jetzt f?r Retouche
-            //verantwortlich sind, andererseits werden die Fusszeilen
-            //auch angefasst.
+            // If the Frame moved forwards to the next page, we re-run through
+            // the predecessor.
+            // This way, we catch predecessors which are now responsible for
+            // retouching, but the footers will be touched also.
             sal_Bool bSetCntnt = sal_True;
             if ( pCntntPrev )
             {
@@ -1919,7 +1911,7 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
                     pImp->GetShell()->AddPaintRect( pCntnt->Frm() );
             }
 
-            //Falls der Frm schon vor der Abarbeitung hier formatiert wurde.
+            // Do this if the Frm has been formatted before.
             if ( pCntnt->IsTxtFrm() && ((SwTxtFrm*)pCntnt)->HasRepaint() &&
                   IsPaint() )
                 PaintCntnt( pCntnt, pPage, pCntnt->Frm(), pCntnt->Frm().Bottom());
@@ -1961,14 +1953,14 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
 |*
 |*  SwLayAction::_FormatCntnt()
 |*
-|*  Beschreibung        Returnt sal_True wenn der Absatz verarbeitet wurde,
-|*                      sal_False wenn es nichts zu verarbeiten gab.
+|*  Description         Returns sal_True if the paragraph has been processed,
+|*                      sal_False if there wasn't anything to be processed.
 |*
 |*************************************************************************/
 void SwLayAction::_FormatCntnt( const SwCntntFrm *pCntnt,
                                 const SwPageFrm  *pPage )
 {
-    //wird sind hier evtl. nur angekommen, weil der Cntnt DrawObjekte haelt.
+    // We probably only ended up here because the Cntnt holds DrawObjects.
     const bool bDrawObjsOnly = pCntnt->IsValid() && !pCntnt->IsCompletePaint() &&
                          !pCntnt->IsRetouche();
     SWRECTFN( pCntnt )
@@ -1999,9 +1991,9 @@ void SwLayAction::_FormatCntnt( const SwCntntFrm *pCntnt,
 |*
 |*  SwLayAction::_FormatFlyCntnt()
 |*
-|*  Beschreibung:
-|*      - Returnt sal_True wenn alle Cntnts des Flys vollstaendig verarbeitet
-|*        wurden. sal_False wenn vorzeitig unterbrochen wurde.
+|*  Description:
+|*      - Returns sal_True if all Cntnts of the Fly have been processed completely.
+|*        Returns sal_False if processing has been interrupted prematurely.
 |*
 |*************************************************************************/
 sal_Bool SwLayAction::_FormatFlyCntnt( const SwFlyFrm *pFly )
@@ -2039,7 +2031,7 @@ sal_Bool SwLayAction::_FormatFlyCntnt( const SwFlyFrm *pFly )
         if ( IsAgain() )
             return sal_False;
 
-        //wenn eine Eingabe anliegt breche ich die Verarbeitung ab.
+        // If there's input, we interrupt processing.
         if ( !pFly->IsFlyInCntFrm() )
         {
             CheckIdleEnd();
@@ -2151,7 +2143,7 @@ sal_Bool SwLayIdle::_DoIdleJob( const SwCntntFrm *pCnt, IdleJobType eJob )
         }
     }
 
-    //Die im Absatz verankerten Flys wollen auch mitspielen.
+    // The Flys that are anchored to the paragraph need to be considered too.
     if ( pCnt->GetDrawObjs() )
     {
         const SwSortedObjs &rObjs = *pCnt->GetDrawObjs();
@@ -2182,8 +2174,8 @@ sal_Bool SwLayIdle::_DoIdleJob( const SwCntntFrm *pCnt, IdleJobType eJob )
 
 sal_Bool SwLayIdle::DoIdleJob( IdleJobType eJob, sal_Bool bVisAreaOnly )
 {
-    //Spellchecken aller Inhalte der Seiten. Entweder nur der sichtbaren
-    //Seiten oder eben aller.
+    // Spellcheck all contents of the pages. Either only the
+    // visible ones or all of them.
     const ViewShell* pViewShell = pImp->GetShell();
     const SwViewOption* pViewOptions = pViewShell->GetViewOptions();
     const SwDoc* pDoc = pViewShell->GetDoc();
@@ -2321,17 +2313,17 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
 
     pImp->GetShell()->EnableSmooth( sal_False );
 
-    //Zuerst den Sichtbaren Bereich Spellchecken, nur wenn dort nichts
-    //zu tun war wird das IdleFormat angestossen.
+    // First, spellcheck the visible area. Only if there's nothing
+    // to do there, we trigger the IdleFormat.
     if ( !DoIdleJob( SMART_TAGS, sal_True ) &&
          !DoIdleJob( ONLINE_SPELLING, sal_True ) &&
          !DoIdleJob( AUTOCOMPLETE_WORDS, sal_True ) ) // SMARTTAGS
     {
-        //Formatieren und ggf. Repaint-Rechtecke an der ViewShell vormerken.
-        //Dabei muessen kuenstliche Actions laufen, damit es z.B. bei
-        //Veraenderungen der Seitenzahl nicht zu unerwuenschten Effekten kommt.
-        //Wir merken uns bei welchen Shells der Cursor sichtbar ist, damit
-        //wir ihn bei Dokumentaenderung ggf. wieder sichbar machen koennen.
+        // Format, then register repaint rectangles with the ViewShell if necessary.
+        // This requires running artificial actions, so we don't get undesired
+        // effects when for instance the page count gets changed.
+        // We remember the shells where the cursor is visible, so we can make
+        // it visible again if needed after a document change.
         std::vector<bool> aBools;
         ViewShell *pSh = pImp->GetShell();
         do
@@ -2354,8 +2346,8 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
         aAction.SetWaitAllowed( sal_False );
         aAction.Action();
 
-        //Weitere Start-/EndActions nur auf wenn irgendwo Paints aufgelaufen
-        //sind oder wenn sich die Sichtbarkeit des CharRects veraendert hat.
+        // Further start/end actions only happen if there were paints started
+        // somewhere or if the visibility of the CharRects has changed.
         sal_Bool bActions = sal_False;
         sal_uInt16 nBoolIdx = 0;
         do
@@ -2390,8 +2382,8 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
 
         if ( bActions )
         {
-            //Start- EndActions aufsetzen. ueber die CrsrShell, damit der
-            //Cursor/Selektion und die VisArea korrekt gesetzt werden.
+            // Prepare start/end actions via CrsrShell, so the cursor, selection
+            // and VisArea can be set correctly.
             nBoolIdx = 0;
             do
             {
@@ -2402,9 +2394,9 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
 //              else
 //                  pSh->StartAction();
 
-                //Wenn Paints aufgelaufen sind, ist es am sinnvollsten schlicht das
-                //gesamte Window zu invalidieren. Anderfalls gibt es Paintprobleme
-                //deren Loesung unverhaeltnissmaessig aufwendig waere.
+                // If there are accrued paints, it's best to simply invalidate
+                // the whole window. Otherwise there would arise paint problems whose
+                // solution would be disproportionally expensive.
                 //fix(18176):
                 SwViewImp *pViewImp = pSh->Imp();
                 sal_Bool bUnlock = sal_False;
@@ -2412,14 +2404,14 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
                 {
                     pViewImp->DelRegion();
 
-                    //Fuer Repaint mit virtuellem Device sorgen.
+                    // Cause a repaint with virtual device.
                     pSh->LockPaint();
                     bUnlock = sal_True;
                 }
 
                 if ( bCrsrShell )
-                    //Wenn der Crsr sichbar war wieder sichbar machen, sonst
-                    //EndCrsrMove mit sal_True fuer IdleEnd.
+                    // If the Crsr was visible, we need to make it visible again.
+                    // Otherwise, EndCrsrMove with sal_True for IdleEnd
                     ((SwCrsrShell*)pSh)->EndCrsrMove( sal_True^aBools[nBoolIdx] );
 //              else
 //                  pSh->EndAction();
commit b1392364a52dfc0f5cdbbad463079fd5ae04763e
Author: Stefan Heinemann <stefan.heinemann at codedump.ch>
Date:   Thu Feb 16 12:01:24 2012 +0100

    Translated German comments to English

diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx
index 3f2ea28..ef1f379 100644
--- a/sw/source/core/layout/sectfrm.cxx
+++ b/sw/source/core/layout/sectfrm.cxx
@@ -157,9 +157,10 @@ SwSectionFrm::~SwSectionFrm()
             {
                 PROTOCOL( this, PROT_SECTION, ACT_DEL_FOLLOW, pMaster )
                 pMaster->SetFollow( GetFollow() );
-                // Ein Master greift sich immer den Platz bis zur Unterkante seines
-                // Uppers. Wenn er keinen Follow mehr hat, kann er diesen ggf. wieder
-                // freigeben, deshalb wird die Size des Masters invalidiert.
+                // A Master always grabs the space until the lower edge of his
+                // Upper. If he doesn't have a Follow anymore, he can
+                // release it, which is why the Size of the Master is
+                // invalidated.
                 if( !GetFollow() )
                     pMaster->InvalidateSize();
             }
@@ -208,9 +209,10 @@ void SwSectionFrm::DelEmpty( sal_Bool bRemove )
     {
         SwSectionFrm *pMaster = FindMaster();
         pMaster->SetFollow( GetFollow() );
-        // Ein Master greift sich immer den Platz bis zur Unterkante seines
-        // Uppers. Wenn er keinen Follow mehr hat, kann er diesen ggf. wieder
-        // freigeben, deshalb wird die Size des Masters invalidiert.
+        // A Master always grabs the space until the lower edge of his
+        // Upper. If he doesn't have a Follow anymore, he can
+        // release it, which is why the Size of the Master is
+        // invalidated.
         if( !GetFollow() && !pMaster->IsColLocked() )
             pMaster->InvalidateSize();
     }
@@ -218,18 +220,18 @@ void SwSectionFrm::DelEmpty( sal_Bool bRemove )
     if( pUp )
     {
         Frm().Height( 0 );
-        // Wenn wir sowieso sofort zerstoert werden, brauchen/duerfen wir
-        // uns gar nicht erst in die Liste eintragen
+        // If we are destroyed immediately anyway, we don't need
+        // to put us into the list
         if( bRemove )
-        {   // Wenn wir bereits halbtot waren vor diesem DelEmpty, so
-            // stehen wir vermutlich auch in der Liste und muessen uns
-            // dort austragen
+        {   // If we already were half dead before this DelEmpty,
+            // we are likely in the list and have to remove us from
+            // it
             if( !pSection && getRootFrm() )
                 getRootFrm()->RemoveFromList( this );
         }
         else if( getRootFrm() )
             getRootFrm()->InsertEmptySct( this );   //swmod 071108//swmod 071225
-        pSection = NULL; // damit ist allerdings eine Reanimierung quasi ausgeschlossen
+        pSection = NULL;  // like this a reanimation is virtually impossible though
     }
 }
 
@@ -256,8 +258,8 @@ void SwSectionFrm::_Cut( sal_Bool bRemove )
     while( pFrm && pFrm->IsSctFrm() && !((SwSectionFrm*)pFrm)->GetSection() )
         pFrm = pFrm->GetNext();
     if( pFrm )
-    {   //Der alte Nachfolger hat evtl. einen Abstand zum Vorgaenger
-        //berechnet der ist jetzt wo er der erste wird obsolete
+    {   // The former successor might have calculated a gap to the predecessor
+        // which is now obsolete since he becomes the first
         pFrm->_InvalidatePrt();
         pFrm->_InvalidatePos();
         if( pFrm->IsSctFrm() )
@@ -272,23 +274,23 @@ void SwSectionFrm::_Cut( sal_Bool bRemove )
     else
     {
         InvalidateNextPos();
-        //Einer muss die Retusche uebernehmen: Vorgaenger oder Upper
+        // Someone has to take over the retouching: predecessor or Upper
         if ( 0 != (pFrm = GetPrev()) )
         {   pFrm->SetRetouche();
             pFrm->Prepare( PREP_WIDOWS_ORPHANS );
             if ( pFrm->IsCntntFrm() )
                 pFrm->InvalidatePage( pPage );
         }
-        //Wenn ich der einzige FlowFrm in meinem Upper bin (war), so muss
-        //er die Retouche uebernehmen.
-        //Ausserdem kann eine Leerseite entstanden sein.
+        // If I am (was) the only FlowFrm in my Upper, then he has to take over
+        // the retouching.
+        // Furthermore a blank page could have emerged
         else
         {   SwRootFrm *pRoot = (SwRootFrm*)pPage->GetUpper();
             pRoot->SetSuperfluous();
             GetUpper()->SetCompletePaint();
         }
     }
-    //Erst removen, dann Upper Shrinken.
+    // First remove, then shrink Upper
     SwLayoutFrm *pUp = GetUpper();
     if( bRemove )
     {
@@ -336,7 +338,7 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
 
     PROTOCOL( this, PROT_PASTE, 0, GetUpper() )
 
-    //In den Baum einhaengen.
+    // Add to the tree
     SwSectionFrm* pSect = pParent->FindSctFrm();
     // #156927#
     // Assure that parent is not inside a table frame, which is inside the found section frame.
@@ -353,20 +355,20 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
     SWRECTFN( pParent )
     if( pSect && HasToBreak( pSect ) )
     {
-        if( pParent->IsColBodyFrm() ) // handelt es sich um einen spaltigen Bereich
+        if( pParent->IsColBodyFrm() ) // dealing with a single-column area
         {
-            // Falls wir zufaellig am Ende einer Spalte stehen, muss pSibling
-            // auf den ersten Frame der naechsten Spalte zeigen, damit
-            // der Inhalt der naechsten Spalte von InsertGroup richtig in den
-            // neu angelegten pSect umgehaengt wird.
+            // If we are coincidentally at the end of a column, pSibling
+            // has to point to the first frame of the next column in order
+            // for the content of the next column to be moved correctly to the
+            // newly created pSect by the InsertGroup
             SwColumnFrm *pCol = (SwColumnFrm*)pParent->GetUpper();
             while( !pSibling && 0 != ( pCol = (SwColumnFrm*)pCol->GetNext() ) )
                 pSibling = ((SwLayoutFrm*)((SwColumnFrm*)pCol)->Lower())->Lower();
             if( pSibling )
             {
-                // Schlimmer noch: alle folgenden Spalteninhalte muessen
-                // an die pSibling-Kette angehaengt werden, damit sie
-                // mitgenommen werden.
+                // Even worse: every following column content has to
+                // be attached to the pSibling-chain in order to be
+                // taken along
                 SwFrm *pTmp = pSibling;
                 while ( 0 != ( pCol = (SwColumnFrm*)pCol->GetNext() ) )
                 {
@@ -379,8 +381,8 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
         }
         pParent = pSect;
         pSect = new SwSectionFrm( *((SwSectionFrm*)pParent)->GetSection(), pParent );
-        // Wenn pParent in zwei Teile zerlegt wird, so muss sein Follow am
-        // neuen, zweiten Teil angebracht werden.
+        // if pParent is decomposed into two parts, its Follow has to be attached
+        // to the new second part
         pSect->SetFollow( ((SwSectionFrm*)pParent)->GetFollow() );
         ((SwSectionFrm*)pParent)->SetFollow( NULL );
         if( pSect->GetFollow() )
@@ -430,10 +432,10 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
 |*
 |*  SwSectionFrm::HasToBreak()
 |*
-|*  Hier wird entschieden, ob der this-SectionFrm den uebergebenen
-|*  (Section)Frm aufbrechen soll oder nicht.
-|*  Zunaechst werden uebergeordnete Bereiche immer aufgebrochen,
-|*  spaeter koennte man es einstellbar machen.
+|*  Here it's decided whether the this-SectionFrm should break up
+|*  the passed (Section)frm (or not).
+|*  Initiall, all superior sections are broken up. Later on that could
+|*  be made configurable.
 |*
 |*************************************************************************/
 
@@ -461,10 +463,9 @@ sal_Bool SwSectionFrm::HasToBreak( const SwFrm* pFrm ) const
 |*
 |*  SwSectionFrm::MergeNext()
 |*
-|*  Verschmilzt zwei SectionFrms, falls es sich um den
-|*  gleichen Bereich handelt.
-|*  Notwendig kann dies sein, wenn ein (Unter-)Bereich geloescht wird, der
-|*  einen anderen in zwei Teile zerlegt hatte.
+|*  Merges two SectionFrms, in case it's about the same section.
+|*  This can be necessary when a (sub)section is deleted that had
+|*  divided another part into two.
 |*
 |*************************************************************************/
 
@@ -484,7 +485,7 @@ void SwSectionFrm::MergeNext( SwSectionFrm* pNxt )
                 while( pLast->GetNext() )
                     pLast = pLast->GetNext();
                 if( pLast->IsColumnFrm() )
-                {   // Spalten jetzt mit BodyFrm
+                {   // Columns now with BodyFrm
                     pLay = (SwLayoutFrm*)((SwLayoutFrm*)pLast)->Lower();
                     pLast = pLay->Lower();
                     if( pLast )
@@ -506,11 +507,10 @@ void SwSectionFrm::MergeNext( SwSectionFrm* pNxt )
 |*
 |*  SwSectionFrm::SplitSect()
 |*
-|*  Zerteilt einen SectionFrm in zwei Teile, der zweite Teil beginnt mit dem
-|*  uebergebenen Frame.
-|*  Benoetigt wird dies beim Einfuegen eines inneren Bereichs, weil innerhalb
-|*  von Rahmen oder Tabellenzellen das MoveFwd nicht den erwuenschten Effekt
-|*  haben kann.
+|*  Divides a SectionFrm into two parts. The second one starts with the
+|*  passed frame.
+|*  This is required when inserting an inner section, because the MoveFwd
+|*  cannot have the desired effect within a frame or a table cell.
 |*
 |*************************************************************************/
 
@@ -523,11 +523,11 @@ sal_Bool SwSectionFrm::SplitSect( SwFrm* pFrm, sal_Bool bApres )
     SwSectionFrm* pSect = pOther->FindSctFrm();
     if( pSect != this )
         return sal_False;
-    // Den Inhalt zur Seite stellen
+    // Put the content aside
     SwFrm* pSav = ::SaveCntnt( this, bApres ? pOther : pFrm );
     OSL_ENSURE( pSav, "SplitSect: What's on?" );
-    if( pSav ) // Robust
-    {   // Einen neuen SctFrm anlegen, nicht als Follow/Master
+    if( pSav ) // be robust
+    {   // Create a new SctFrm, not as a Follower/master
         SwSectionFrm* pNew = new SwSectionFrm( *pSect->GetSection(), pSect );
         pNew->InsertBehind( pSect->GetUpper(), pSect );
         pNew->Init();
@@ -559,15 +559,15 @@ sal_Bool SwSectionFrm::SplitSect( SwFrm* pFrm, sal_Bool bApres )
 |*
 |*  SwSectionFrm::MoveCntntAndDelete()
 |*
-|*  MoveCntnt wird zur Zerstoerung eines SectionFrms wg. Aufhebung oder
-|*  Verstecken des Bereichs gerufen, um den Inhalt umzuhaengen.
-|*  Wenn der SectionFrm keinen anderen aufbrach, so wird der Inhalt in
-|*  den Upper bewegt. Anderfalls wird der Inhalt in den anderen SectionFrm
-|*  umgehaengt, dieser muss ggf. gemergt werden.
+|*  MoveCntnt is called for destroying a SectionFrms, due to
+|*  the cancellation or hiding of a section, to handle the content.
+|*  If the SectionFrm hasn't broken up another one, then the content
+|*  is moved to the Upper. Otherwise the content is moved to another
+|*  SectionFrm, which has to be potentially merged.
 |*
 |*************************************************************************/
-// Wenn ein mehrspaltiger Bereich aufgehoben wird, muessen die ContentFrms
-// invalidiert werden
+// If a multi-column section is cancelled, the ContentFrms have to be
+// invalidated
 
 void lcl_InvalidateInfFlags( SwFrm* pFrm, sal_Bool bInva )
 {
@@ -653,16 +653,15 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
     if( pDel->IsInTab() && pParent )
     {
         SwTabFrm *pTab = pDel->FindTabFrm();
-        // Wenn wir innerhalb einer Tabelle liegen, koennen wir nur Bereiche
-        // aufgebrochen haben, die ebenfalls innerhalb liegen, nicht etwa
-        // einen Bereich, der die gesamte Tabelle umfasst.
+        // If we are within a table, we can only have broken up sections that
+        // are inside as well, but not a section that contains the whole table.
         if( pTab->IsInSct() && pParent == pTab->FindSctFrm()->GetFmt() )
             pParent = NULL;
     }
-    // Wenn unser Format einen Parent besitzt, so haben wir vermutlich
-    // einen anderen SectionFrm aufgebrochen, dies muss geprueft werden,
-    // dazu besorgen wir uns zunaechst den vorhergehende und den nach-
-    // folgenden CntntFrm, mal sehen, ob diese in SectionFrms liegen.
+    // If our Format has a parent, we have probably broken up another
+    // SectionFrm, which has to be checked. To do so we first acquire the
+    // succeeding and the preceding CntntFrm, let's see if they
+    // lay in the SectionFrms.
     // OD 27.03.2003 #i12711# - check, if previous and next section belonging
     // together and can be joined, *not* only if deleted section contains content.
     if ( pParent )
@@ -678,7 +677,7 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
         pPrvSct = pNxtSct = NULL;
     }
 
-    // Jetzt wird der Inhalt beseite gestellt und der Frame zerstoert
+    // Now the content is put aside and the frame is destroyed
     SwFrm *pSave = bSave ? ::SaveCntnt( pDel ) : NULL;
     sal_Bool bOldFtn = sal_True;
     if( pSave && pUp->IsFtnFrm() )
@@ -689,36 +688,36 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
     pDel->DelEmpty( sal_True );
     delete pDel;
     if( pParent )
-    {   // Hier wird die geeignete Einfuegeposition gesucht
+    {   // Search for the appropriate insert position
         if( pNxtSct && pNxtSct->GetFmt() == pParent )
-        {   // Hier koennen wir uns am Anfang einfuegen
+        {   // Here we can insert outselves at the beginning
             pUp = FIRSTLEAF( pNxtSct );
             pPrv = NULL;
             if( pPrvSct && !( pPrvSct->GetFmt() == pParent ) )
-                pPrvSct = NULL; // damit nicht gemergt wird
+                pPrvSct = NULL; // In order that nothing is merged
         }
         else if( pPrvSct && pPrvSct->GetFmt() == pParent )
-        {   // Wunderbar, hier koennen wir uns am Ende einfuegen
+        {   // Wonderful, here we can insert ourselves at the end
             pUp = pPrvSct;
             if( pUp->Lower() && pUp->Lower()->IsColumnFrm() )
             {
                 pUp = static_cast<SwLayoutFrm*>(pUp->GetLastLower());
-                // Der Body der letzten Spalte
+                // The body of the last column
                 pUp = static_cast<SwLayoutFrm*>(pUp->Lower());
             }
-            // damit hinter dem letzten eingefuegt wird
+            // In order to perform the insertion after the last one
             pPrv = pUp->GetLastLower();
-            pPrvSct = NULL; // damit nicht gemergt wird
+            pPrvSct = NULL; // Such that nothing is merged
         }
         else
         {
             if( pSave )
-            {   // Folgende Situationen: Vor und hinter dem zu loeschenden Bereich
-                // ist entweder die Bereichsgrenze des umfassenden Bereichs oder
-                // es schliesst ein anderer (Geschwister-)Bereich direkt an, der
-                // vom gleichen Parent abgeleitet ist.
-                // Dann gibt es (noch) keinen Teil unseres Parents, der den Inhalt
-                // aufnehmen kann,also bauen wir ihn uns.
+            {   // Following situations: before and after the section-to-be
+                // deleted there is the section boundary of the enclosing
+                // section, or another (sibling) section connects subsequently,
+                // that derives from the same Parent.
+                // In that case, there's not (yet) a part of our parent available
+                // that can store the content, so we create it here.
                 pPrvSct = new SwSectionFrm( *pParent->GetSection(), pUp );
                 pPrvSct->InsertBehind( pUp, pPrv );
                 pPrvSct->Init();
@@ -727,10 +726,10 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
                 pUp = FIRSTLEAF( pPrvSct );
                 pPrv = NULL;
             }
-            pPrvSct = NULL; // damit nicht gemergt wird
+            pPrvSct = NULL; // Such that nothing will be merged
         }
     }
-    // Der Inhalt wird eingefuegt..
+    // The content is going to be inserted..
     if( pSave )
     {
         lcl_InvalidateInfFlags( pSave, bSize );
@@ -739,7 +738,7 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
         if( !bOldFtn )
             ((SwFtnFrm*)pUp)->ColUnlock();
     }
-    // jetzt koennen eventuell zwei Teile des uebergeordneten Bereich verschmelzen
+    // Now two parts of the superior section could possibly be merged
     if( pPrvSct && !pPrvSct->IsJoinLocked() )
     {
         OSL_ENSURE( pNxtSct, "MoveCntnt: No Merge" );
@@ -751,7 +750,7 @@ void SwSectionFrm::MakeAll()
 {
     if ( IsJoinLocked() || IsColLocked() || StackHack::IsLocked() || StackHack::Count() > 50 )
         return;
-    if( !pSection ) // Durch DelEmpty
+    if( !pSection ) // Via DelEmpty
     {
 #ifdef DBG_UTIL
         OSL_ENSURE( getRootFrm()->IsInDelList( this ), "SectionFrm without Section" );
@@ -767,7 +766,7 @@ void SwSectionFrm::MakeAll()
         bValidSize = bValidPos = bValidPrtArea = sal_True;
         return;
     }
-    LockJoin(); //Ich lass mich nicht unterwegs vernichten.
+    LockJoin(); // I don't let myself to be destroyed on the way
 
     while( GetNext() && GetNext() == GetFollow() )
     {
@@ -792,8 +791,8 @@ void SwSectionFrm::MakeAll()
         }
     }
 
-    // Ein Bereich mit Follow nimmt allen Platz bis zur Unterkante des Uppers
-    // in Anspruch. Bewegt er sich, so kann seine Groesse zu- oder abnehmen...
+    // A section with Follow uses all the space until the lower edge of the
+    // Upper. If it moves, its size can grow or decrease...
     if( !bValidPos && ToMaximize( sal_False ) )
         bValidSize = sal_False;
 
@@ -1012,12 +1011,12 @@ void SwSectionFrm::CollectEndnotes( SwLayouter* pLayouter )
 |*
 |*  SwSectionFrm::_CheckClipping( sal_Bool bGrow, sal_Bool bMaximize )
 |*
-|*  Beschreibung:       Passt die Groesse an die Umgebung an.
-|*      Wer einen Follow oder Fussnoten besitzt, soll bis zur Unterkante
-|*      des Uppers gehen (bMaximize).
-|*      Niemand darf ueber den Upper hinausgehen, ggf. darf man versuchen (bGrow)
-|*      seinen Upper zu growen.
-|*      Wenn die Groesse veraendert werden musste, wird der Inhalt kalkuliert.
+|*  Description: Fits the size to the surroundings.
+|*  Those that have a Follow or foot notes, have to extend until
+|*  the lower edge of a upper (bMaximize)
+|*  They must not extend above the Upper, as the case may be one can
+|*  try to grow its upper (bGrow)
+|*  If the size had to be changed, the content is calculated.
 |*
 |*************************************************************************/
 
@@ -1090,9 +1089,8 @@ void SwSectionFrm::_CheckClipping( sal_Bool bGrow, sal_Bool bMaximize )
         bool bHeightChanged = bVert ?
                             (aOldSz.Width() != Prt().Width()) :
                             (aOldSz.Height() != Prt().Height());
-        // Wir haben zu guter Letzt noch einmal die Hoehe geaendert,
-        // dann wird das innere Layout (Columns) kalkuliert und
-        // der Inhalt ebenfalls.
+        // Last but not least we have changed the height again, thus the inner
+        // layout (columns) is calculated and the content as well.
         // OD 18.09.2002 #100522#
         // calculate content, only if height has changed.
         // OD 03.11.2003 #i19737# - restriction of content calculation too strong.
@@ -1285,13 +1283,13 @@ class ExtraFormatToPositionObjs
 |*
 |*  SwSectionFrm::Format()
 |*
-|*  Beschreibung:       "Formatiert" den Frame; Frm und PrtArea.
+|*  Description:        "formats" the frame; Frm and PrtArea
 |*
 |*************************************************************************/
 
 void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
 {
-    if( !pSection ) // Durch DelEmpty
+    if( !pSection ) // via DelEmpty
     {
 #ifdef DBG_UTIL
         OSL_ENSURE( getRootFrm()->IsInDelList( this ), "SectionFrm without Section" );
@@ -1329,10 +1327,9 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
 
         bValidSize = sal_True;
 
-        //die Groesse wird nur dann vom Inhalt bestimmt, wenn der SectFrm
-        //keinen Follow hat. Anderfalls fuellt er immer den Upper bis
-        //zur Unterkante aus. Fuer den Textfluss ist nicht er, sondern sein
-        //Inhalt selbst verantwortlich.
+        // The size is only determined by the content, if the SectFrm does not have a
+        // Follow. Otherwise it fills (occupies) the Upper down to the lower edge.
+        // It is not responsible for the text flow, but the content is.
         sal_Bool bMaximize = ToMaximize( sal_False );
 
         // OD 2004-05-17 #i28701# - If the wrapping style has to be considered
@@ -1376,7 +1373,7 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
             bValidSize = sal_True;
         }
 
-        //Breite der Spalten pruefen und ggf. einstellen.
+        // Check the width of the columns and adjust if necessary
         if ( bHasColumns && ! Lower()->GetNext() && bMaximize )
             ((SwColumnFrm*)Lower())->Lower()->Calc();
 
@@ -1417,9 +1414,8 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
                         pFrm = ((SwLayoutFrm*)pFrm)->Lower();
                         CalcFtnCntnt();
                     }
-                    // Wenn wir in einem spaltigen Rahmen stehen und dieser
-                    // gerade im FormatWidthCols ein CalcCntnt ruft, muss
-                    // unser Inhalt ggf. kalkuliert werden.
+                    // If we are in a columned frame which calls a CalcCntnt
+                    // in the FormatWidthCols, the content might need calculating
                     if( pFrm && !pFrm->IsValid() && IsInFly() &&
                         FindFlyFrm()->IsColLocked() )
                         ::CalcCntnt( this );
@@ -1457,10 +1453,9 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
                 InvalidateNextPos();
                 if( pLower && ( !pLower->IsColumnFrm() || !pLower->GetNext() ) )
                 {
-                    // Wenn ein einspaltiger Bereich gerade den Platz geschaffen
-                    // hat, den sich die "undersized" Absaetze gewuenscht haben,
-                    // muessen diese invalidiert und kalkuliert werden, damit
-                    // sie diesen ausfuellen.
+                    // If a single-column section just created the space that
+                    // was requested by the "undersized" paragraphs, then they
+                    // have to be invalidated and calculated, so they fully cover it
                     pFrm = pLower;
                     if( pFrm->IsColumnFrm() )
                     {
@@ -1488,8 +1483,8 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
             }
         }
 
-        //Unterkante des Uppers nicht ueberschreiten. Fuer Sections mit
-        //Follows die Unterkante auch nicht unterschreiten.
+        // Do not exceed the lower edge of the Upper.
+        // Do not extend below the lower edge with Sections with Follows
         if ( GetUpper() )
             _CheckClipping( sal_True, bMaximize );
         if( !bOldLock )
@@ -1498,7 +1493,7 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
         if( nDiff > 0 )
         {
             if( !GetNext() )
-                SetRetouche(); // Dann muessen wir die Retusche selbst uebernehmen
+                SetRetouche(); // Take over the retouching ourselves
             if( GetUpper() && !GetUpper()->IsFooterFrm() )
                 GetUpper()->Shrink( nDiff );
         }
@@ -1511,42 +1506,42 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
 |*
 |*  SwFrm::GetNextSctLeaf()
 |*
-|*  Beschreibung        Liefert das naechste Layoutblatt in das der Frame
-|*      gemoved werden kann.
-|*      Neue Seiten werden nur dann erzeugt, wenn der Parameter sal_True ist.
+|*  Description:        Returns the next layout sheet where the frame
+|*      can be moved in.
+|*      New pages are created only if the parameter sal_True is set
 |*
 |*************************************************************************/
 
 
 SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
 {
-    //Achtung: Geschachtelte Bereiche werden zur Zeit nicht unterstuetzt.
+    // Attention: Nested sections are currently not supported
 
     PROTOCOL_ENTER( this, PROT_LEAF, ACT_NEXT_SECT, GetUpper()->FindSctFrm() )
 
-    // Abkuerzungen fuer spaltige Bereiche, wenn wir noch nicht in der letzten Spalte sind.
-    // Koennen wir in die naechste Spalte des Bereichs rutschen?
+    // Shortcuts for "columned" sections, if we're not in the last column
+    // Can we slide to the next column of the section?
     if( IsColBodyFrm() && GetUpper()->GetNext() )
         return (SwLayoutFrm*)((SwLayoutFrm*)GetUpper()->GetNext())->Lower();
     if( GetUpper()->IsColBodyFrm() && GetUpper()->GetUpper()->GetNext() )
         return (SwLayoutFrm*)((SwLayoutFrm*)GetUpper()->GetUpper()->GetNext())->Lower();
-    // Innerhalb von Bereichen in Tabellen oder Bereichen in Kopf/Fusszeilen kann
-    // nur ein Spaltenwechsel erfolgen, eine der oberen Abkuerzungen haette zuschlagen muessen
+    // Inside a section, in tables, or sections of headers/footers, there can be only
+    // one column shift be made, one of the above shortcuts should have applied!
     if( GetUpper()->IsInTab() || FindFooterOrHeader() )
         return 0;
 
-//MA 03. Feb. 99: Warum GetUpper()? Das knallt mit Buch.sgl weil im
-//FlyAtCnt::MakeFlyPos ein Orient der SectionFrm ist und auf diesen ein
-//GetLeaf gerufen wird.
+// Why GetUpper()? This crashes sometimes, because in
+// FlyAtCnt::MakeFlyPos there is an Orient of the SectionFrm and on this a
+// GetLeaf is called
 //  SwSectionFrm *pSect = GetUpper()->FindSctFrm();
     SwSectionFrm *pSect = FindSctFrm();
     sal_Bool bWrongPage = sal_False;
     OSL_ENSURE( pSect, "GetNextSctLeaf: Missing SectionFrm" );
 
-    // Hier eine Abkuerzung fuer Bereiche mit Follows,
-    // dieser kann akzeptiert werden, wenn keine Spalten oder Seiten (ausser Dummyseiten)
-    // dazwischen liegen.
-    // Bei verketteten Rahmen und ind Fussnoten wuerde die Abkuerzung noch aufwendiger
+    // Shortcut for sections with Follows. That's ok,
+    // if no columns or pages (except dummy pages) lie in between.
+    // In case of linked frames and in footnotes the shortcut would get
+    // even more costly
     if( pSect->HasFollow() && pSect->IsInDocBody() )
     {
         if( pSect->GetFollow() == pSect->GetNext() )
@@ -1563,19 +1558,19 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
             if( !pSect->GetUpper()->IsColBodyFrm() ||
                 0 == ( pTmp = pSect->GetUpper()->GetUpper()->GetNext() ) )
                 pTmp = pSect->FindPageFrm()->GetNext();
-            if( pTmp ) // ist jetzt die naechste Spalte oder Seite
+            if( pTmp ) // is now the next column or page
             {
                 SwFrm* pTmpX = pTmp;
                 if( pTmp->IsPageFrm() && ((SwPageFrm*)pTmp)->IsEmptyPage() )
-                    pTmp = pTmp->GetNext(); // Dummyseiten ueberspringen
+                    pTmp = pTmp->GetNext(); // skip dummy pages
                 SwFrm *pUp = pSect->GetFollow()->GetUpper();
-                // pUp wird die Spalte, wenn der Follow in einer "nicht ersten" Spalte
-                // liegt, ansonsten die Seite:
+                // pUp becomes the next column if the Follow lies in a column
+                // that is not a "not first" one, otherwise the page
                 if( !pUp->IsColBodyFrm() ||
                     !( pUp = pUp->GetUpper() )->GetPrev() )
                     pUp = pUp->FindPageFrm();
-                // Jetzt muessen pUp und pTmp die gleiche Seite/Spalte sein,
-                // sonst liegen Seiten oder Spalten zwischen Master und Follow.
+                // Now pUp and pTmp have to be the same page/column, otherwise
+                // pages or columns lie between Master and Follow
                 if( pUp == pTmp || pUp->GetNext() == pTmpX )
                 {
                     SwPageFrm* pNxtPg = pUp->IsPageFrm() ?
@@ -1589,12 +1584,12 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
         }
     }
 
-    // Immer im gleichen Bereich landen: Body wieder in Body etc.
+    // Always end up in the same section: Body again inside Body etc.
     const sal_Bool bBody = IsInDocBody();
     const sal_Bool bFtnPage = FindPageFrm()->IsFtnPage();
 
     SwLayoutFrm *pLayLeaf;
-    // Eine Abkuerzung fuer TabFrms, damit nicht alle Zellen abgehuehnert werden
+    // A shortcut for TabFrms such that not all cells need to be visited
     if( bWrongPage )
         pLayLeaf = 0;
     else if( IsTabFrm() )
@@ -1612,32 +1607,31 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
         }
     }
 
-    SwLayoutFrm *pOldLayLeaf = 0;           //Damit bei neu erzeugten Seiten
-                                            //nicht wieder vom Anfang gesucht
-                                            //wird.
+    SwLayoutFrm *pOldLayLeaf = 0;           // Such that in case of newly
+                                            // created pages, the search is
+                                            // not started over at the beginning
 
     while( sal_True )
     {
         if( pLayLeaf )
         {
-            // Ein Layoutblatt wurde gefunden, mal sehen, ob er mich aufnehmen kann,
-            // ob hier ein weiterer SectionFrm eingefuegt werden kann
-            // oder ob wir weitersuchen muessen.
+            // A layout leaf was found, let's see whether it can store me or
+            // another SectionFrm can be inserted here, or we have to continue
+            // searching
             SwPageFrm* pNxtPg = pLayLeaf->FindPageFrm();
             if ( !bFtnPage && pNxtPg->IsFtnPage() )
-            {   //Wenn ich bei den Endnotenseiten angelangt bin hat sichs.
+            {   // If I reached the end note pages it's over
                 pLayLeaf = 0;
                 continue;
             }
-            // Einmal InBody, immer InBody, nicht in Tabellen hinein
-            // und nicht in fremde Bereiche hinein
+            // Once inBody always inBody, don't step into tables and not into other sections
             if ( (bBody && !pLayLeaf->IsInDocBody()) ||
                  (IsInFtn() != pLayLeaf->IsInFtn() ) ||
                  pLayLeaf->IsInTab() ||
                  ( pLayLeaf->IsInSct() && ( !pSect->HasFollow()
                    || pSect->GetFollow() != pLayLeaf->FindSctFrm() ) ) )
             {
-                //Er will mich nicht; neuer Versuch, neues Glueck
+                // Rejected - try again.
                 pOldLayLeaf = pLayLeaf;
                 pLayLeaf = pLayLeaf->GetNextLayoutLeaf();
                 continue;
@@ -1652,15 +1646,14 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
                 continue;
             }
         }
-        //Es gibt keinen passenden weiteren LayoutFrm, also muss eine
-        //neue Seite her, allerdings nuetzen uns innerhalb eines Rahmens
-        //neue Seiten nichts.
+        // There is no further LayoutFrm that fits, so a new page
+        // has to be created, although new pages are worthless within a frame
         else if( !pSect->IsInFly() &&
             ( eMakePage == MAKEPAGE_APPEND || eMakePage == MAKEPAGE_INSERT ) )
         {
             InsertPage(pOldLayLeaf ? pOldLayLeaf->FindPageFrm() : FindPageFrm(),
                        sal_False );
-            //und nochmal das ganze
+            // and again the whole thing
             pLayLeaf = pOldLayLeaf ? pOldLayLeaf : GetNextLayoutLeaf();
             continue;
         }
@@ -1669,14 +1662,14 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
 
     if( pLayLeaf )
     {
-        // Das passende Layoutblatt haben wir gefunden, wenn es dort bereits einen
-        // Follow unseres Bereichs gibt, nehmen wir dessen erstes Layoutblatt,
-        // andernfalls wird es Zeit, einen Bereichsfollow zu erzeugen
+        // We have found the suitable layout sheet. If there (in the sheet) is
+        // already a Follow of our section, we take its first layout sheet,
+        // otherwise it is time to create a section follow
         SwSectionFrm* pNew;
 
-        //Dies kann entfallen, wenn bei existierenden Follows bereits abgekuerzt wurde
+        // This can be omitted if existing Follows were cut short
         SwFrm* pFirst = pLayLeaf->Lower();
-        // Auch hier muessen zum Loeschen angemeldete SectionFrms ignoriert werden
+        // Here SectionFrms that are to be deleted must be ignored
         while( pFirst && pFirst->IsSctFrm() && !((SwSectionFrm*)pFirst)->GetSection() )
             pFirst = pFirst->GetNext();
         if( pFirst && pFirst->IsSctFrm() && pSect->GetFollow() == pFirst )
@@ -1691,8 +1684,8 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
             SWRECTFN( pNew )
             (pNew->*fnRect->fnMakePos)( pLayLeaf, NULL, sal_True );
 
-            // Wenn unser Bereichsframe einen Nachfolger hat, so muss dieser
-            // umgehaengt werden hinter den neuen Follow der Bereichsframes.
+            // If our section frame has a successor then that has to be
+            // moved behind the new Follow of the section frames
             SwFrm* pTmp = pSect->GetNext();
             if( pTmp && pTmp != pSect->GetFollow() )
             {
@@ -1737,7 +1730,7 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
             if( pNew->GetFollow() )
                 pNew->SimpleFormat();
         }
-        // Das gesuchte Layoutblatt ist jetzt das erste des ermittelten SctFrms:
+        // The wanted layout sheet is now the first of the determined SctFrms:
         pLayLeaf = FIRSTLEAF( pNew );
     }
     return pLayLeaf;
@@ -1747,8 +1740,8 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
 |*
 |*  SwFrm::GetPrevSctLeaf()
 |*
-|*  Beschreibung        Liefert das vorhergehende LayoutBlatt in das der
-|*      Frame gemoved werden kann.
+|*  Description         Returns the preceding layout sheet where the frame
+|*      can be moved into
 |*
 |*************************************************************************/
 
@@ -1758,7 +1751,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
     PROTOCOL_ENTER( this, PROT_LEAF, ACT_PREV_SECT, GetUpper()->FindSctFrm() )
 
     SwLayoutFrm* pCol;
-    // ColumnFrm beinhalten jetzt stets einen BodyFrm
+    // ColumnFrm always contain a BodyFrm now
     if( IsColBodyFrm() )
         pCol = GetUpper();
     else if( GetUpper()->IsColBodyFrm() )
@@ -1773,31 +1766,32 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
             do
             {
                 pCol = (SwLayoutFrm*)pCol->GetPrev();
+                // Is there any content?
                 // Gibt es dort Inhalt?
                 if( ((SwLayoutFrm*)pCol->Lower())->Lower() )
                 {
-                    if( bJump )     // Haben wir eine leere Spalte uebersprungen?
+                    if( bJump )     // Did we skip a blank page?
                         SwFlowFrm::SetMoveBwdJump( sal_True );
-                    return (SwLayoutFrm*)pCol->Lower();  // Der Spaltenbody
+                    return (SwLayoutFrm*)pCol->Lower();  // The columnm body
                 }
                 bJump = sal_True;
             } while( pCol->GetPrev() );
 
-            // Hier landen wir, wenn alle Spalten leer sind,
-            // pCol ist jetzt die erste Spalte, wir brauchen aber den Body:
+            // We get here when all columns are empty, pCol is now the
+            // first column, we need the body though
             pCol = (SwLayoutFrm*)pCol->Lower();
         }
         else
             pCol = NULL;
     }
 
-    if( bJump )     // Haben wir eine leere Spalte uebersprungen?
+    if( bJump )     // Did we skip a blank page?
         SwFlowFrm::SetMoveBwdJump( sal_True );
 
-    // Innerhalb von Bereichen in Tabellen oder Bereichen in Kopf/Fusszeilen kann
-    // nur ein Spaltenwechsel erfolgen, eine der oberen Abkuerzungen haette
-    // zuschlagen muessen, ebenso wenn der Bereich einen pPrev hat.
-    // Jetzt ziehen wir sogar eine leere Spalte in Betracht...
+    // Within sections in tables or section in headers/footers there can
+    // be only one column change be made, one of the above shortcuts should
+    // have applied, also when the section has a pPrev.
+    // Now we even consider an empty column...
     OSL_ENSURE( FindSctFrm(), "GetNextSctLeaf: Missing SectionFrm" );
     if( ( IsInTab() && !IsTabFrm() ) || FindFooterOrHeader() )
         return pCol;
@@ -1822,7 +1816,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
         SwFrm *pPrv;
         if( 0 != ( pPrv = pSect->GetIndPrev() ) )
         {
-            // Herumlungernde, halbtote SectionFrms sollen uns nicht beirren
+            // Mooching, half dead SectionFrms shouldn't confuse us
             while( pPrv && pPrv->IsSctFrm() && !((SwSectionFrm*)pPrv)->GetSection() )
                 pPrv = pPrv->GetPrev();
             if( pPrv )
@@ -1838,7 +1832,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
 
     while ( pLayLeaf )
     {
-        //In Tabellen oder Bereiche geht's niemals hinein.
+        // Never step into tables or sections
         if ( pLayLeaf->IsInTab() || pLayLeaf->IsInSct() )
         {
             pLayLeaf = pLayLeaf->GetPrevLayoutLeaf();
@@ -1872,7 +1866,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
                 SwFlowFrm::SetMoveBwdJump( sal_True );
         }
         else if ( bFly )
-            break;  //Cntnts in Flys sollte jedes Layout-Blatt recht sein. Warum?
+            break;  // Cntnts in Flys every layout sheet should be right. Why?
         else
             pLayLeaf = pLayLeaf->GetPrevLayoutLeaf();
     }
@@ -1884,7 +1878,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
     }
 
     SwSectionFrm* pNew = NULL;
-    // Zunaechst einmal an das Ende des Layoutblatts gehen
+    // At first go to the end of the layout sheet
     SwFrm *pTmp = pLayLeaf->Lower();
     if( pTmp )
     {
@@ -1892,7 +1886,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
             pTmp = pTmp->GetNext();
         if( pTmp->IsSctFrm() )
         {
-            // Halbtote stoeren hier nur...
+            // Half dead ones only interfere here
             while( !((SwSectionFrm*)pTmp)->GetSection() && pTmp->GetPrev() &&
                     pTmp->GetPrev()->IsSctFrm() )
                 pTmp = pTmp->GetPrev();
@@ -1909,10 +1903,10 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
         (pNew->*fnRect->fnMakePos)( pLayLeaf, pNew->GetPrev(), sal_True );
 
         pLayLeaf = FIRSTLEAF( pNew );
-        if( !pNew->Lower() )    // einspaltige Bereiche formatieren
+        if( !pNew->Lower() )    // Format single column sections
         {
             pNew->MakePos();
-            pLayLeaf->Format(); // damit die PrtArea fuers MoveBwd stimmt
+            pLayLeaf->Format(); // In order that the PrtArea is correct for the MoveBwd
         }
         else
             pNew->SimpleFormat();
@@ -1949,7 +1943,7 @@ SwTwips lcl_DeadLine( const SwFrm* pFrm )
     {
         if( pUp->IsSctFrm() )
             pUp = pUp->GetUpper();
-        // Spalten jetzt mit BodyFrm
+        // Columns now with BodyFrm
         else if( pUp->IsColBodyFrm() && pUp->GetUpper()->GetUpper()->IsSctFrm() )
             pUp = pUp->GetUpper()->GetUpper();
         else
@@ -1959,9 +1953,8 @@ SwTwips lcl_DeadLine( const SwFrm* pFrm )
     return pUp ? (pUp->*fnRect->fnGetPrtBottom)() :
                  (pFrm->Frm().*fnRect->fnGetBottom)();
 }
-
-// SwSectionFrm::Growable(..) prueft, ob der SectionFrm noch wachsen kann,
-// ggf. muss die Umgebung gefragt werden
+// SwSectionFrm::Growable(..) checks whether the SectionFrm is still able to
+// grow, as case may be the environment has to be asked
 
 sal_Bool SwSectionFrm::Growable() const
 {
@@ -2115,8 +2108,8 @@ SwTwips SwSectionFrm::_Shrink( SwTwips nDist, sal_Bool bTst )
 
             if ( Lower()->IsColumnFrm() && Lower()->GetNext() && // FtnAtEnd
                  !GetSection()->GetFmt()->GetBalancedColumns().GetValue() )
-            {   //Bei Spaltigkeit ubernimmt das Format die Kontrolle ueber
-                //das Wachstum (wg. des Ausgleichs).
+            {   // With column bases the format takes over the control of the
+                // growth (because of the balance)
                 if ( !bTst )
                     InvalidateSize();
                 return nDist;
@@ -2183,23 +2176,22 @@ SwTwips SwSectionFrm::_Shrink( SwTwips nDist, sal_Bool bTst )
 |*
 |*  SwSectionFrm::MoveAllowed()
 |*
-|*  Wann sind Frms innerhalb eines SectionFrms moveable?
-|*  Wenn sie noch nicht in der letzten Spalte des SectionFrms sind,
-|*  wenn es einen Follow gibt,
-|*  wenn der SectionFrm nicht mehr wachsen kann, wird es komplizierter,
-|*  dann kommt es darauf an, ob der SectionFrm ein naechstes Layoutblatt
-|*  finden kann. In (spaltigen/verketteten) Flys wird dies via GetNextLayout
-|*  geprueft, in Tabellen und in Kopf/Fusszeilen gibt es keins, im DocBody
-|*  und auch im Fussnoten dagegen immer.
-|*
-|*  Benutzt wird diese Routine im TxtFormatter, um zu entscheiden, ob ein
-|*  (Absatz-)Follow erzeugt werden darf oder ob der Absatz zusammenhalten muss.
+|*  When are Frms within a SectionFrms moveable?
+|*  If they are not in the last column of a SectionFrms yet,
+|*  if there is no Follow,
+|*  if the SectionFrm cannot grow anymore, then it gets more complicated,
+|*  in that case it depends on whether the SectionFrm can find a next
+|*  layout sheet. In (column based/chained) Flys this is checked via
+|*  GetNextLayout, in tables and headers/footers there is none, however in the
+|*  DocBody and in foot notes there is always one.
+|*  This routine is used in the TxtFormatter to decided whether it's allowed to
+|*  create a (paragraph-)Follow or whether the paragraph has to stick together
 |*
 |*************************************************************************/
 
 sal_Bool SwSectionFrm::MoveAllowed( const SwFrm* pFrm) const
 {
-    // Gibt es einen Follow oder ist der Frame nicht in der letzten Spalte?
+    // Is there a Follow or is the Frame not in the last column?
     if( HasFollow() || ( pFrm->GetUpper()->IsColBodyFrm() &&
         pFrm->GetUpper()->GetUpper()->GetNext() ) )
         return sal_True;
@@ -2238,14 +2230,14 @@ sal_Bool SwSectionFrm::MoveAllowed( const SwFrm* pFrm) const
                 return sal_True;
         }
     }
-    // Oder kann der Bereich noch wachsen?
+    // Or can the section still grow?
     if( !IsColLocked() && Growable() )
         return sal_False;
-    // Jetzt muss untersucht werden, ob es ein Layoutblatt gibt, in dem
-    // ein Bereichsfollow erzeugt werden kann.
+    // Now it has to be examined whether there is a layout sheet wherein
+    // a section Follow can be created
     if( IsInTab() || ( !IsInDocBody() && FindFooterOrHeader() ) )
-        return sal_False; // In Tabellen/Kopf/Fusszeilen geht es nicht
-    if( IsInFly() ) // Bei spaltigen oder verketteten Rahmen
+        return sal_False; // It doesn't work in tables/headers/footers
+    if( IsInFly() ) // In column based or chained frames
         return 0 != ((SwFrm*)GetUpper())->GetNextLeaf( MAKEPAGE_NONE );
     return sal_True;
 }
@@ -2303,8 +2295,8 @@ SwFrm* SwFrm::_GetIndNext()
     if( pSct->IsSctFrm() )
         return pSct->GetIndNext();
     if( pSct->IsColBodyFrm() && (pSct = pSct->GetUpper()->GetUpper())->IsSctFrm() )
-    {   // Wir duerfen nur den Nachfolger des SectionFrms zurueckliefern,
-        // wenn in keiner folgenden Spalte mehr Inhalt ist
+    {   // We can only return the successor of the SectionFrms if there is no
+        // content in the successing columns
         SwFrm* pCol = GetUpper()->GetUpper()->GetNext();
         while( pCol )
         {
@@ -2437,16 +2429,15 @@ void SwSectionFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew
     sal_Bool bClear = sal_True;
     const sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0;
     switch( nWhich )
-    {   // Mehrspaltigkeit in Fussnoten unterdruecken...
+    {   // Suppress multi columns in foot notes
         case RES_FMT_CHG:
         {
             const SwFmtCol& rNewCol = GetFmt()->GetCol();
             if( !IsInFtn() )
             {
-                //Dummer Fall. Bei der Zuweisung einer Vorlage k?nnen wir uns
-                //nicht auf das alte Spaltenattribut verlassen. Da diese
-                //wenigstens anzahlgemass fuer ChgColumns vorliegen muessen,
-                //bleibt uns nur einen temporaeres Attribut zu basteln.
+                // Nasty case. When allocating a template we can not count
+                // on the old column attribute. We're left with creating a
+                // temporary attribute here.
                 SwFmtCol aCol;
                 if ( Lower() && Lower()->IsColumnFrm() )
                 {
@@ -2623,9 +2614,10 @@ void SwSectionFrm::InvalidateFtnPos()
 }
 
 /*--------------------------------------------------
- * SwSectionFrm::Undersize() liefert den Betrag, um den der Bereich gern
- * groesser waere, wenn in ihm Undersized TxtFrms liegen, ansonsten Null.
- * Das Undersized-Flag wird ggf. korrigiert.
+ * SwSectionFrm::Undersize() returns the value that the section
+ * would like to be greater if it has undersized TxtFrms in it,
+ * otherwise Null..
+ * If necessary the undersized-flag is corrected.
  * --------------------------------------------------*/
 
 long SwSectionFrm::Undersize( sal_Bool bOverSize )
@@ -2675,18 +2667,17 @@ void SwSectionFrm::CalcFtnCntnt()
         }
     }
 }
-
 /* --------------------------------------------------
- * Wenn ein SectionFrm leerlaeuft, z.B. weil sein Inhalt die Seite/Spalte wechselt,
- * so wird er nicht sofort zerstoert (es koennte noch jemand auf dem Stack einen Pointer
- * auf ihn halten), sondern er traegt sich in eine Liste am RootFrm ein, die spaeter
- * abgearbeitet wird (in LayAction::Action u.a.). Seine Groesse wird auf Null gesetzt und
- * sein Zeiger auf seine Section ebenfalls. Solche zum Loeschen vorgesehene SectionFrms
- * muessen vom Layout/beim Formatieren ignoriert werden.
+ * If a SectionFrm gets empty, e.g. because its content changes the page/column,
+ * it is not destroyed immediately (there could be a pointer left to it on the
+ * stack), instead it puts itself in a list at the RootFrm, which is processed
+ * later on (in Layaction::Action among others). Its size is set to Null and
+ * the pointer to its page as well. Such SectionFrms that are to be deleted
+ * must be ignored by the layout/during formatting.
  *
- * Mit InsertEmptySct nimmt der RootFrm einen SectionFrm in die Liste auf,
- * mit RemoveFromList kann ein SectionFrm wieder aus der Liste entfernt werden (Dtor),
- * mit DeleteEmptySct wird die Liste abgearbeitet und die SectionFrms zerstoert
+ * With InsertEmptySct the RootFrm stores a SectionFrm in the list,
+ * with RemoveFromList it can be removed from the list (Dtor),
+ * with DeleteEmptySct the list is processed and the SectionFrms are destroyed.
  * --------------------------------------------------*/
 
 void SwRootFrm::InsertEmptySct( SwSectionFrm* pDel )


More information about the Libreoffice-commits mailing list