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

Jan Holesovsky kendy at kemper.freedesktop.org
Mon Feb 27 05:57:13 PST 2012


 sw/source/core/layout/atrfrm.cxx   |  191 ++++++-------
 sw/source/core/layout/calcmove.cxx |  470 +++++++++++++++-----------------
 sw/source/core/layout/colfrm.cxx   |   65 ++--
 sw/source/core/layout/dbg_lay.cxx  |  329 ++++++++++++----------
 sw/source/core/layout/findfrm.cxx  |  143 ++++-----
 sw/source/core/layout/flycnt.cxx   |  189 ++++++------
 sw/source/core/layout/flyincnt.cxx |   26 -
 sw/source/core/layout/flypos.cxx   |    8 
 sw/source/core/layout/laycache.cxx |   12 
 sw/source/core/layout/pagedesc.cxx |   29 -
 sw/source/core/layout/paintfrm.cxx |  314 ++++++++++-----------
 sw/source/core/layout/ssfrm.cxx    |   27 -
 sw/source/core/layout/unusedf.cxx  |   16 -
 sw/source/core/layout/virtoutp.cxx |   12 
 sw/source/core/layout/virtoutp.hxx |    2 
 sw/source/core/layout/wsfrm.cxx    |  538 +++++++++++++++++--------------------
 16 files changed, 1173 insertions(+), 1198 deletions(-)

New commits:
commit 542047f0c555e8a7d0538d4be905556d5b3cbf5a
Author: Nicolas Christener <nicolas.christener at adfinis-sygroup.ch>
Date:   Mon Feb 13 11:37:48 2012 +0100

    translate german comments

diff --git a/sw/source/core/layout/ssfrm.cxx b/sw/source/core/layout/ssfrm.cxx
index d0515ef..f935cc7 100644
--- a/sw/source/core/layout/ssfrm.cxx
+++ b/sw/source/core/layout/ssfrm.cxx
@@ -458,7 +458,7 @@ SwCntntFrm::~SwCntntFrm()
     if( 0 != ( pCNd = PTR_CAST( SwCntntNode, GetRegisteredIn() )) &&
         !pCNd->GetDoc()->IsInDtor() )
     {
-        //Bei der Root abmelden wenn ich dort noch im Turbo stehe.
+        //Unregister from root if I'm still in turbo there.
         SwRootFrm *pRoot = getRootFrm();
         if( pRoot && pRoot->GetTurbo() == this )
         {
@@ -523,13 +523,14 @@ void SwCntntFrm::DelFrms( const SwCntntNode& rNode )
             SwCntntFrm* pMaster = (SwTxtFrm*)pFrm->FindMaster();
             pMaster->SetFollow( pFrm->GetFollow() );
         }
-        pFrm->SetFollow( 0 );//Damit er nicht auf dumme Gedanken kommt.
-                                //Andernfalls kann es sein, dass ein Follow
-                                //vor seinem Master zerstoert wird, der Master
-                                //greift dann ueber den ungueltigen
-                                //Follow-Pointer auf fremdes Memory zu.
-                                //Die Kette darf hier zerknauscht werden, weil
-                                //sowieso alle zerstoert werden.
+        pFrm->SetFollow( 0 );//So it doesn't get funny ideas.
+                                //Otherwise it could be possible that a follow
+                                //gets destroyed before its master. Following
+                                //the now invalid pointer will then lead to an
+                                //illegal memory access. The chain can be
+                                //crushed here because we'll destroy all of it
+                                //anyway.
+
         if( pFrm->GetUpper() && pFrm->IsInFtn() && !pFrm->GetIndNext() &&
             !pFrm->GetIndPrev() )
         {
@@ -563,10 +564,10 @@ SwLayoutFrm::~SwLayoutFrm()
     {
         while ( pFrm )
         {
-            //Erst die Objs des Frm vernichten, denn diese koennen sich sonst nach
-            //dem Remove nicht mehr bei der Seite abmelden.
-            //Falls sich einer nicht abmeldet wollen wir nicht gleich
-            //endlos schleifen.
+            //First delete the Objs of the Frm because they can't unregister
+            //from the page after remove.
+            //We don't want to create an endless loop only because one couldn't
+            //unregister.
 
             sal_uInt32 nCnt;
             while ( pFrm->GetDrawObjs() && pFrm->GetDrawObjs()->Count() )
@@ -598,7 +599,7 @@ SwLayoutFrm::~SwLayoutFrm()
             delete pFrm;
             pFrm = pLower;
         }
-        //Fly's vernichten. Der letzte loescht gleich das Array.
+        //Delete the Flys, the last one also deletes the array.
         sal_uInt32 nCnt;
         while ( GetDrawObjs() && GetDrawObjs()->Count() )
         {
commit c198cb5c26daee57b471d0911977081680f91369
Author: Nicolas Christener <nicolas.christener at adfinis-sygroup.ch>
Date:   Mon Feb 13 11:37:03 2012 +0100

    translate german comments

diff --git a/sw/source/core/layout/dbg_lay.cxx b/sw/source/core/layout/dbg_lay.cxx
index b3458ff..69cdfeb 100644
--- a/sw/source/core/layout/dbg_lay.cxx
+++ b/sw/source/core/layout/dbg_lay.cxx
@@ -29,51 +29,74 @@
 #ifdef DBG_UTIL
 
 /*
- * Und hier die Beschreibung:
+ * And here's the description:
  *
- * Durch die PROTOCOL-Makros wird es ermoeglicht, Ereignisse im Frame-Methoden zu protokollieren.
- * In protokollwuerdigen Stellen in Frame-Methoden muss entweder ein PROTOCOL(...) oder bei Methoden,
- * bei denen auch das Verlassen der Methode mitprotokolliert werden soll, ein PROTOCOL_ENTER(...)-Makro
- * stehen.
- * Die Parameter der PROTOCOL-Makros sind
- * 1.   Ein Pointer auf einen SwFrm, also meist "this" oder "rThis"
- * 2.   Die Funktionsgruppe z.B. PROT_MAKEALL, hierueber wird (inline) entschieden, ob dies
- *      zur Zeit protokolliert werden soll oder nicht.
- * 3.   Die Aktion, im Normalfall 0, aber z.B. ein ACT_START bewirkt eine Einrueckung in der
- *      Ausgabedatei, ein ACT_END nimmt dies wieder zurueck. Auf diese Art wird z.B. durch
- *      PROTOCOL_ENTER am Anfang einer Methode eingerueckt und beim Verlassen wieder zurueck.
- * 4.   Der vierte Parameter ist ein void-Pointer, damit man irgendetwas uebergeben kann,
- *      was in das Protokoll einfliessen kann, typesches Beispiel bei PROT_GROW muss man
- *      einen Pointer auf den Wert, um den gegrowt werden soll, uebergeben.
+ * The PROTOCOL macros allow you to log events in frame methods. In places where
+ * logging is useful either one of the PROTOCOL(...) or PROTOCOL_ENTER(...) can
+ * be used. PROTOCOL_ENTER(...) additionally logs the leaving of a method.
+
+ * The PROTOCOL macros accept the following parameters:
+ * 1.   A pointer to an SwFrm (usually "this" or "rThis")
+ * 2.   The function group i.e. PROT_MAKEALL. This is used to decide (inline)
+ *      whether this event shall be logged at the current time.
+ * 3.   The action, usually 0. For example ACT_START indents output in the log
+ *      file and ACT_END stops the indentation. This allows for example
+ *      PROTOCOL_ENTER to indent at the beginning of a method and stop indenting
+ *      when leaving the method.
+ * 4.   The fourth parameter is a void pointer which allows to pass anything
+ *      which can be used in the log. A good example is PROT_GROW: this requires
+ *      a pointer to the value which defines how much to grow.
  *
- *
- * Das Protokoll ist die Datei "dbg_lay.out" im aktuellen (BIN-)Verzeichnis.
- * Es enthaelt Zeilen mit FrmId, Funktionsgruppe sowie weiteren Infos.
+ * The log file is called "dbg_lay.out", which is saved in the current (BIN-)
+ * directory. The file contains lines with FrmId, function group and additional
+ * information.
  *
  * Was genau protokolliert wird, kann auf folgende Arten eingestellt werden:
- * 1.   Die statische Variable SwProtokoll::nRecord enthaelt die Funktionsgruppen,
- *      die aufgezeichnet werden sollen.
- *      Ein Wert von z.B. PROT_GROW bewirkt, das Aufrufe von SwFrm::Grow dokumentiert werden,
- *      PROT_MAKEALL protokolliert Aufrufe von xxx::MakeAll.
- *      Die PROT_XY-Werte koennen oderiert werden.
- *      Default ist Null, es wird keine Methode aufgezeichnet.
- * 2.   In der SwImplProtocol-Klasse gibt es einen Filter fuer Frame-Typen,
- *      nur die Methodenaufrufe von Frame-Typen, die dort gesetzt sind, werden protokolliert.
- *      Der Member nTypes kann auf Werte wie FRM_PAGE, FRM_SECTION gesetzt und oderiert werden.
- *      Default ist 0xFFFF, d.h. alle Frame-Typen.
+ * What exactly is going to be logged, can be defined as follows:
+ * 1.   The static variable SwProtocol::nRecord contains the function groups
+ *      which shall be logged.
+ *      A value of i.e. PROT_GROW causes calls to SwFrm::Grow to be
+ *      logged; PROT_MAKEALL logs the calls to xxx::MakeAll.
+ *      The PROT_XY values can be combined using binary OR, the default value
+ *      is null - no method calls are logged.
+ * 2.   The SwImplProtocol class contains a filter for frame types, only method
+ *      call of frame types which are defined there are logged.
+ *      The member nTypes can be set to values like FRM_PAGE or FRM_SECTION and
+ *      may be combined using binary OR. The default values is 0xFFFF - meaning
+ *      all frame types.
+
  * 3.   In der SwImplProtocol-Klasse gibt es einen ArrayPointer auf FrmIds, die zu ueberwachen sind.
  *      Ist der Pointer Null, so werden alle Frames protokolliert, ansonsten nur Frames,
  *      die in dem Array vermerkt sind.
+
+ * 3.   The SwImplProtocol class contains an ArrayPointer to FrmIds which need to be
+ *      tracked. If the pointer is null, all frames will be logged; otherwise
+ *      only frames of linked from the array will be logged.
  *
  * Eine Aufzeichnung in Gang zu setzen, erfordert entweder Codemanipulation, z.B. in
  * SwProtocol::Init() einen anderen Default fuer nRecord setzen oder Debuggermanipulation.
  * Im Debugger gibt verschiedene, sich anbietende Stellen:
+
+ * Code changes are needed to start logging; either change the default of nRecord
+ * in SwProtocol::Init() or change the debugger. There are several possible
+ * places in the debugger:
+
  * 1.   In SwProtocol::Init() einen Breakpoint setzen und dort nRecord manipulieren, ggf.
  *      FrmIds eintragen, dann beginnt die Aufzeichnung bereits beim Programmstart.
+
+ * 1.   Set a breakpoint in SwProtocol::Init() and manipulate nRecord there, set
+        FrmIds accordingly then start logging during program start.
+
  * 2.   Waehrend des Programmlaufs einen Breakpoint vor irgendein PROTOCOL oder PROTOCOL_ENTER-
  *      Makro setzen, dann am SwProtocol::nRecord das unterste Bit setzen (PROT_INIT). Dies
  *      bewirkt, dass die Funktionsgruppe des folgenden Makros aktiviert und in Zukunft
  *      protokolliert wird.
+
+ * 2.   Set a breakpoint before any PROTOCOL or PROTOCOL_ENTER macro during
+        program execution, then set the lowest bit (PROT_INIT) of
+        SwProtocol::nRecord. This activates the function group of the following
+        macro and causes it to be logged in the future.
+
  * 3.   Spezialfall von 2.: Wenn man 2. in der Methode SwRootFrm::Paint(..) anwendet, werden
  *      die Aufzeichnungseinstellung aus der Datei "dbg_lay.ini" ausgelesen!
  *      In dieser INI-Datei kann es Kommentarzeilen geben, diese beginnen mit '#', dann
@@ -98,9 +121,39 @@
  *          [frmtype] !0x3FFF 0x4
  *      ------------------------------------------
  *
+ * 3.   There's a special case for 2: If one uses 2. in SwRootFrm::Paint(..),
+ *      the log settings are taken from the file "dbg_lay.ini"!
+ *      In this INI-file you can have comment lines starting with a '#'.
+ *      The sections "[frmid]", "[frmtype]" and "[record]" are relevant.
+ *      In the [frmid] section, you can put FrameIds of the Frames to be logged.
+ *      If there are no entries in this section, all Frames will be logged.
+ *      In the [frmtype] section, the frame types which should be logged are
+ *      listed; default is USHRT_MAX which means that all types are logged.
+ *      It's possible to remove types from the list using '!' in front of a
+ *      value. The value !0xC000 would for example exclude SwCntntFrms from
+ *      logging.
+ *      In the [record] section the functions group which should be logged are
+ *      listed; default is 0 which means that none are logged. It's also
+ *      possible to remove functions using '!'.
+ *      An example INI file:
+ *      ------------------------------------------
+ *           #Functions: all, except PRTARE
+ *           [record] 0xFFFFFFFE !0x200
+ *           [frmid]
+ *           #the following FrmIds:
+ *           1 2 12 13 14 15
+ *           #no layout frames, except ColumnFrms
+ *           [frmtype] !0x3FFF 0x4
+ *      ------------------------------------------
+
  * Wenn die Aufzeichnung erstmal laeuft, kann man in SwImplProtocol::_Record(...) mittels
  * Debugger vielfaeltige Manipulationen vornehmen, z.B. bezueglich FrameTypen oder FrmIds.
  *
+
+ * As soon as the logging is in process, one can manipulate many things in
+ * SwImplProtocol::_Record(...) using a debugger, especially concerning
+ * frame types and FrmIds.
+
  * --------------------------------------------------*/
 
 #include "dbg_lay.hxx"
@@ -137,16 +190,15 @@ sal_uLong lcl_GetFrameId( const SwFrm* pFrm )
 
 class SwImplProtocol
 {
-    SvFileStream *pStream;      // Ausgabestream
-    std::set<sal_uInt16> *pFrmIds;      // welche FrmIds sollen aufgezeichnet werden ( NULL == alle )
-    std::vector<long> aVars;    // Variables
-    rtl::OStringBuffer aLayer;          // Einrueckung der Ausgabe ("  " pro Start/End)
-    sal_uInt16 nTypes;              // welche Typen sollen aufgezeichnet werden
-    sal_uInt16 nLineCount;          // Ausgegebene Zeilen
-    sal_uInt16 nMaxLines;           // Maximal auszugebende Zeilen
-    sal_uInt8 nInitFile;                // Bereich (FrmId,FrmType,Record) beim Einlesen der INI-Datei
-    sal_uInt8 nTestMode;                // Special fuer Testformatierung, es wird ggf. nur
-                                // innerhalb einer Testformatierung aufgezeichnet.
+    SvFileStream *pStream;          // output stream
+    std::set<sal_uInt16> *pFrmIds;  // which FrmIds shall be logged ( NULL == all)
+    std::vector<long> aVars;        // variables
+    rtl::OStringBuffer aLayer;      // indentation of output ("  " per start/end)
+    sal_uInt16 nTypes;              // which types shall be logged
+    sal_uInt16 nLineCount;          // printed lines
+    sal_uInt16 nMaxLines;           // max lines to be printed
+    sal_uInt8 nInitFile;            // range (FrmId,FrmType,Record) during reading of the INI file
+    sal_uInt8 nTestMode;            // special for test formating, logging may only be done in test formating.
     void _Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam );
     sal_Bool NewStream();
     void CheckLine( rtl::OString& rLine );
@@ -154,41 +206,38 @@ class SwImplProtocol
 public:
     SwImplProtocol();
     ~SwImplProtocol();
-    // Aufzeichnen
+    // logging
     void Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam )
         { if( pStream ) _Record( pFrm, nFunction, nAct, pParam ); }
-    sal_Bool InsertFrm( sal_uInt16 nFrmId );    // FrmId aufnehmen zum Aufzeichnen
-    sal_Bool DeleteFrm( sal_uInt16 nFrmId );    // FrmId entfernen, diesen nicht mehr Aufzeichnen
-    void FileInit();                    // Auslesen der INI-Datei
+    sal_Bool InsertFrm( sal_uInt16 nFrmId );    // take FrmId for logging
+    sal_Bool DeleteFrm( sal_uInt16 nFrmId );    // remove FrmId; don't log him anymore
+    void FileInit();                    // read the INI file
     void ChkStream() { if( !pStream ) NewStream(); }
 };
 
 /* --------------------------------------------------
- * Durch das PROTOCOL_ENTER-Makro wird ein SwEnterLeave-Objekt erzeugt,
- * wenn die aktuelle Funktion aufgezeichnet werden soll, wird ein
- * SwImplEnterLeave-Objekt angelegt. Der Witz dabei ist, das der Ctor
- * des Impl-Objekt am Anfang der Funktion und automatisch der Dtor beim
- * Verlassen der Funktion gerufen wird. In der Basis-Implementierung ruft
- * der Ctor lediglich ein PROTOCOL(..) mit ACT_START und im Dtor ein
- * PROTOCOL(..) mit ACT_END.
- * Es lassen sich Ableitungen der Klasse bilden, um z.B. beim Verlassen
- * einer Funktion Groessenaenderungen des Frames zu dokumentieren u.v.a.m.
- * Dazu braucht dann nur noch in SwEnterLeave::Ctor(...) die gewuenschte
- * SwImplEnterLeave-Klasse angelegt zu werden.
- *
+ * Through the PROTOCOL_ENTER macro a SwEnterLeave object gets created. If the
+ * current function should be logged a SwImplEnterLeace object gets created.
+ * The funny thing here is, that the Ctor of the Impl object is automatically
+ * called at the beginning of the function and the Dtor is automatically called
+ * when leaving the function. In the base implementation the Ctor calls only
+ * PROTOCOL(..) with ACT_START and in the Dtor a PROTOCOL(..) with ACT_END.
+ * It's possible to derive from this class, for example to be able to document
+ * frame resize while leaving a function. To do this, one only needs to add the
+ * desired SwImplEnterLeave class in SwEnterLeave::Ctor().
  * --------------------------------------------------*/
 
 class SwImplEnterLeave
 {
 protected:
-    const SwFrm* pFrm;              // Der Frame,
-    sal_uLong nFunction, nAction;       // die Funktion, ggf. die Aktion
-    void* pParam;                   // und weitere Parameter
+    const SwFrm* pFrm;              // the frame
+    sal_uLong nFunction, nAction;   // the function, the action if needed
+    void* pParam;                   // further parameter
 public:
     SwImplEnterLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : pFrm( pF ), nFunction( nFunct ), nAction( nAct ), pParam( pPar ) {}
-    virtual void Enter();           // Ausgabe beim Eintritt
-    virtual void Leave();           // Ausgabe beim Verlassen
+    virtual void Enter();           // message when entering
+    virtual void Leave();           // message when leaving
 };
 
 class SwSizeEnterLeave : public SwImplEnterLeave
@@ -197,7 +246,7 @@ class SwSizeEnterLeave : public SwImplEnterLeave
 public:
     SwSizeEnterLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : SwImplEnterLeave( pF, nFunct, nAct, pPar ), nFrmHeight( pF->Frm().Height() ) {}
-    virtual void Leave();           // Ausgabe der Groessenaenderung
+    virtual void Leave();           // resize message
 };
 
 class SwUpperEnterLeave : public SwImplEnterLeave
@@ -206,8 +255,8 @@ class SwUpperEnterLeave : public SwImplEnterLeave
 public:
     SwUpperEnterLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : SwImplEnterLeave( pF, nFunct, nAct, pPar ), nFrmId( 0 ) {}
-    virtual void Enter();           // Ausgabe
-    virtual void Leave();           // Ausgabe der FrmId des Uppers
+    virtual void Enter();           // message
+    virtual void Leave();           // message of FrmId from upper
 };
 
 class SwFrmChangesLeave : public SwImplEnterLeave
@@ -216,33 +265,34 @@ class SwFrmChangesLeave : public SwImplEnterLeave
 public:
     SwFrmChangesLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : SwImplEnterLeave( pF, nFunct, nAct, pPar ), aFrm( pF->Frm() ) {}
-    virtual void Enter();           // keine Ausgabe
-    virtual void Leave();           // Ausgabe bei Aenderung der Frm-Area
+    virtual void Enter();           // no message
+    virtual void Leave();           // message when resizing the Frm area
 };
 
 void SwProtocol::Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam )
 {
     if( Start() )
-    {   // Hier landen wir, wenn im Debugger SwProtocol::nRecord mit PROT_INIT(0x1) oderiert wurde
-        sal_Bool bFinit = sal_False; // Dies bietet im Debugger die Moeglichkeit,
-        if( bFinit )         // die Aufzeichnung dieser Action zu beenden
+    {   // We reach this point if SwProtocol::nRecord is binary OR'd with PROT_INIT(0x1) using the debugger
+        sal_Bool bFinit = sal_False; // This gives the possibility to stop logging of this action in the debugger
+        if( bFinit )
         {
-            nRecord &= ~nFunction;  // Diese Funktion nicht mehr aufzeichnen
-            nRecord &= ~PROT_INIT;  // PROT_INIT stets zuruecksetzen
+            nRecord &= ~nFunction;  // Don't log this function any longer
+            nRecord &= ~PROT_INIT;  // Always reset PROT_INIT
             return;
         }
-        nRecord |= nFunction;       // Aufzeichnung dieser Funktion freischalten
-        nRecord &= ~PROT_INIT;      // PROT_INIT stets zuruecksetzen
+        nRecord |= nFunction;       // Acitivate logging of this function
+        nRecord &= ~PROT_INIT;      // Always reset PROT_INIT
         if( pImpl )
             pImpl->ChkStream();
     }
-    if( !pImpl )                        // Impl-Object anlegen, wenn noetig
+    if( !pImpl )                        // Create Impl object if needed
         pImpl = new SwImplProtocol();
-    pImpl->Record( pFrm, nFunction, nAct, pParam ); // ...und Aufzeichnen
+    pImpl->Record( pFrm, nFunction, nAct, pParam ); // ...and start logging
 }
 
-// Die folgende Funktion wird beim Anziehen der Writer-DLL durch TxtInit(..) aufgerufen
-// und ermoeglicht dem Debuggenden Funktionen und/oder FrmIds freizuschalten
+// The following function gets called when pulling in the writer DLL through
+// TxtInit(..) and gives the possibility to release functions
+// and/or FrmIds to the debugger
 
 void SwProtocol::Init()
 {
@@ -257,7 +307,7 @@ void SwProtocol::Init()
     aStream.Close();
 }
 
-// Ende der Aufzeichnung
+// End of logging
 
 void SwProtocol::Stop()
 {
@@ -304,43 +354,43 @@ SwImplProtocol::~SwImplProtocol()
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::CheckLine analysiert eine Zeile der INI-Datei
+ * SwImplProtocol::CheckLine analyzes a line in the INI file
  * --------------------------------------------------*/
 
 void SwImplProtocol::CheckLine( rtl::OString& rLine )
 {
-    rLine = rLine.toAsciiLowerCase(); // Gross/Kleinschreibung ist einerlei
+    rLine = rLine.toAsciiLowerCase(); // upper/lower case is the same
     rLine = rLine.replace( '\t', ' ' );
-    if( '#' == rLine[0] )   // Kommentarzeilen beginnen mit '#'
+    if( '#' == rLine[0] )   // comments start with '#'
         return;
-    if( '[' == rLine[0] )   // Bereiche: FrmIds, Typen oder Funktionen
+    if( '[' == rLine[0] )   // section: FrmIds, type or funciton
     {
         rtl::OString aTmp = comphelper::string::getToken(rLine, 0, ']');
-        if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmid")))      // Bereich FrmIds
+        if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmid")))      // section FrmIds
         {
             nInitFile = 1;
             pFrmIds->clear();
             delete pFrmIds;
-            pFrmIds = NULL;         // Default: Alle Frames aufzeichnen
+            pFrmIds = NULL;         // default: log all frames
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmtype")))// Bereich Typen
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmtype")))// section types
         {
             nInitFile = 2;
-            nTypes = USHRT_MAX;     // Default: Alle FrmaeTypen aufzeichnen
+            nTypes = USHRT_MAX;     // default: log all frame types
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[record")))// Bereich Funktionen
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[record")))// section functions
         {
             nInitFile = 3;
-            SwProtocol::SetRecord( 0 );// Default: Keine Funktion wird aufgezeichnet
+            SwProtocol::SetRecord( 0 );// default: don't log any function
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[test")))// Bereich Funktionen
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[test")))// section functions
         {
-            nInitFile = 4; // Default:
-            nTestMode = 0; // Ausserhalb der Testformatierung wird aufgezeichnet
+            nInitFile = 4; // default:
+            nTestMode = 0; // log outside of test formating
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[max")))// maximale Zeilenzahl
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[max")))// Max number of lines
         {
-            nInitFile = 5; // Default:
+            nInitFile = 5; // default:
             nMaxLines = USHRT_MAX;
         }
         else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[var")))// variables
@@ -348,11 +398,11 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
             nInitFile = 6;
         }
         else
-            nInitFile = 0;          // Nanu: Unbekannter Bereich?
+            nInitFile = 0;          // oops: unknown section?
         rLine = rLine.copy(aTmp.getLength() + 1);
     }
 
-    // Blanks (oder Tabs) sind die Trenner
+    // spaces (or tabs) are the delimiter
     sal_Int32 nIndex = 0;
     do
     {
@@ -360,7 +410,7 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
         sal_Bool bNo = sal_False;
         if( '!' == aTok[0] )
         {
-            bNo = sal_True;                 // Diese(n) Funktion/Typ entfernen
+            bNo = sal_True;                 // remove this function/type
             aTok = aTok.copy(1);
         }
         if( !aTok.isEmpty() )
@@ -369,31 +419,31 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
             sscanf( aTok.getStr(), "%li", &nVal );
             switch ( nInitFile )
             {
-                case 1: InsertFrm( sal_uInt16( nVal ) );    // FrmId aufnehmen
+                case 1: InsertFrm( sal_uInt16( nVal ) );    // add FrmId
                         break;
                 case 2: {
                             sal_uInt16 nNew = (sal_uInt16)nVal;
                             if( bNo )
-                                nTypes &= ~nNew;    // Typ entfernen
+                                nTypes &= ~nNew;    // remove type
                             else
-                                nTypes |= nNew;     // Typ aufnehmen
+                                nTypes |= nNew;     // add type
                         }
                         break;
                 case 3: {
                             sal_uLong nOld = SwProtocol::Record();
                             if( bNo )
-                                nOld &= ~nVal;      // Funktion entfernen
+                                nOld &= ~nVal;      // remove function
                             else
-                                nOld |= nVal;       // Funktion aufnehmen
+                                nOld |= nVal;       // remove function
                             SwProtocol::SetRecord( nOld );
                         }
                         break;
                 case 4: {
                             sal_uInt8 nNew = (sal_uInt8)nVal;
                             if( bNo )
-                                nTestMode &= ~nNew; // TestMode zuruecksetzen
+                                nTestMode &= ~nNew; // reset test mode
                             else
-                                nTestMode |= nNew;      // TestMode setzen
+                                nTestMode |= nNew;      // set test mode
                         }
                         break;
                 case 5: nMaxLines = (sal_uInt16)nVal;
@@ -407,8 +457,8 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::FileInit() liest die Datei "dbg_lay.ini"
- * im aktuellen Verzeichnis und wertet sie aus.
+ * SwImplProtocol::FileInit() reads the file "dbg_lay.ini"
+ * in the current directory and evaluates it.
  * --------------------------------------------------*/
 void SwImplProtocol::FileInit()
 {
@@ -422,25 +472,25 @@ void SwImplProtocol::FileInit()
         {
             sal_Char c;
             aStream >> c;
-            if( '\n' == c || '\r' == c )    // Zeilenende
+            if( '\n' == c || '\r' == c )    // line ending
             {
                 aLine = aLine.trim();
                 if( !aLine.isEmpty() )
-                    CheckLine( aLine );     // Zeile auswerten
+                    CheckLine( aLine );     // evaluate line
                 aLine = rtl::OString();
             }
             else
                 aLine = rtl::OString(c);
         }
         if( !aLine.isEmpty() )
-            CheckLine( aLine );     // letzte Zeile auswerten
+            CheckLine( aLine );     // evaluate last line
     }
     aStream.Close();
 }
 
 /* --------------------------------------------------
- * lcl_Start sorgt fuer Einrueckung um zwei Blanks bei ACT_START
- * und nimmt diese bei ACT_END wieder zurueck.
+ * lcl_Start enables indentation by two spaces during ACT_START and disables
+ * it again at ACT_END.
  * --------------------------------------------------*/
 void lcl_Start(rtl::OStringBuffer& rOut, rtl::OStringBuffer& rLay, sal_uLong nAction)
 {
@@ -461,8 +511,8 @@ void lcl_Start(rtl::OStringBuffer& rOut, rtl::OStringBuffer& rLay, sal_uLong nAc
 }
 
 /* --------------------------------------------------
- * lcl_Flags gibt das ValidSize-, ValidPos- und ValidPrtArea-Flag ("Sz","Ps","PA")
- * des Frames aus, "+" fuer valid, "-" fuer invalid.
+ * lcl_Flags outputs the ValidSize-, ValidPos- and ValidPrtArea-Flag ("Sz","Ps","PA")
+ * of the frame; "+" stands for valid, "-" stands for invalid.
  * --------------------------------------------------*/
 
 void lcl_Flags(rtl::OStringBuffer& rOut, const SwFrm* pFrm)
@@ -476,7 +526,7 @@ void lcl_Flags(rtl::OStringBuffer& rOut, const SwFrm* pFrm)
 }
 
 /* --------------------------------------------------
- * lcl_FrameType gibt den Typ des Frames in Klartext aus.
+ * lcl_FrameType outputs the type of the frame as clear text.
  * --------------------------------------------------*/
 
 void lcl_FrameType( rtl::OStringBuffer& rOut, const SwFrm* pFrm )
@@ -525,16 +575,15 @@ void lcl_FrameType( rtl::OStringBuffer& rOut, const SwFrm* pFrm )
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::Record(..) wird nur gerufen, wenn das PROTOCOL-Makro
- * feststellt, dass die Funktion aufgezeichnet werden soll ( SwProtocol::nRecord ).
- * In dieser Methode werden noch die beiden weiteren Einschraenkungen ueberprueft,
- * ob die FrmId und der FrameType zu den aufzuzeichnenden gehoeren.
+ * SwImplProtocol::Record(..) is only called if the PROTOCOL macro finds out,
+ * that this function should be recorded ( SwProtocol::nRecord ).
+ * In this method we also check if FrmId and frame type should be logged.
  * --------------------------------------------------*/
 
 void SwImplProtocol::_Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam )
 {
     sal_uInt16 nSpecial = 0;
-    if( nSpecial )  // Debugger-Manipulationsmoeglichkeit
+    if( nSpecial )  // the possible debugger manipulations
     {
         sal_uInt16 nId = sal_uInt16(lcl_GetFrameId( pFrm ));
         switch ( nSpecial )
@@ -547,22 +596,22 @@ void SwImplProtocol::_Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong
         return;
     }
     if( !pStream && !NewStream() )
-        return; // Immer noch kein Stream
+        return; // still no stream
 
     if( pFrmIds && !pFrmIds->count( sal_uInt16(lcl_GetFrameId( pFrm )) ) )
-        return; // gehoert nicht zu den gewuenschten FrmIds
+        return; // doesn't belong to the wished FrmIds
 
     if( !(pFrm->GetType() & nTypes) )
-        return; // Der Typ ist unerwuenscht
+        return; // the type is unwanted
 
     if( 1 == nTestMode && nFunction != PROT_TESTFORMAT )
-        return; // Wir sollen nur innerhalb einer Testformatierung aufzeichnen
+        return; // we may only log inside a test formating
     sal_Bool bTmp = sal_False;
     rtl::OStringBuffer aOut(aLayer);
     aOut.append(static_cast<sal_Int64>(lcl_GetFrameId(pFrm)));
     aOut.append(' ');
-    lcl_FrameType( aOut, pFrm );    // dann den FrameType
-    switch ( nFunction )            // und die Funktion
+    lcl_FrameType( aOut, pFrm );    // then the frame type
+    switch ( nFunction )            // and the function
     {
         case PROT_SNAPSHOT: lcl_Flags( aOut, pFrm );
                             break;
@@ -684,15 +733,15 @@ void SwImplProtocol::_Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong
                                 break;
                             }
     }
-    *pStream << aOut.getStr() << endl;  // Ausgabe
-    pStream->Flush();   // Gleich auf die Platte, damit man mitlesen kann
-    if( ++nLineCount >= nMaxLines )     // Maximale Ausgabe erreicht?
-        SwProtocol::SetRecord( 0 );        // => Ende der Aufzeichnung
+    *pStream << aOut.getStr() << endl;  // output
+    pStream->Flush();   // to the disk, so we can read it immediately
+    if( ++nLineCount >= nMaxLines )     // max number of lines reached?
+        SwProtocol::SetRecord( 0 );        // => end f logging
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::SectFunc(...) wird von SwImplProtocol::_Record(..) gerufen,
- * hier werden die Ausgaben rund um SectionFrms abgehandelt.
+ * SwImplProtocol::SectFunc(...) is called from SwImplProtocol::_Record(..)
+ * here we handle the output of the SectionFrms.
  * --------------------------------------------------*/
 
 void SwImplProtocol::SectFunc(rtl::OStringBuffer &rOut, const SwFrm* , sal_uLong nAct, void* pParam)
@@ -723,9 +772,9 @@ void SwImplProtocol::SectFunc(rtl::OStringBuffer &rOut, const SwFrm* , sal_uLong
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::InsertFrm(..) nimmt eine neue FrmId zum Aufzeichnen auf,
- * wenn pFrmIds==NULL, werden alle aufgezeichnet, sobald durch InsertFrm(..)
- * pFrmIds angelegt wird, werden nur noch die enthaltenen FrmIds aufgezeichnet.
+ * SwImplProtocol::InsertFrm(..) takes a new FrmId for logging; if pFrmIds==NULL
+ * all are going to be logged but as soon as pFrmIds are set through
+ * InsertFrm(..) only the added FrmIds are being logged.
  * --------------------------------------------------*/
 
 sal_Bool SwImplProtocol::InsertFrm( sal_uInt16 nId )
@@ -739,8 +788,8 @@ sal_Bool SwImplProtocol::InsertFrm( sal_uInt16 nId )
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::DeleteFrm(..) entfernt eine FrmId aus dem pFrmIds-Array,
- * so dass diese Frame nicht mehr aufgezeichnet wird.
+ * SwImplProtocol::DeleteFrm(..) removes a FrmId from the pFrmIds array, so they
+ * won't be logged anymore.
  * --------------------------------------------------*/
 sal_Bool SwImplProtocol::DeleteFrm( sal_uInt16 nId )
 {
@@ -752,10 +801,10 @@ sal_Bool SwImplProtocol::DeleteFrm( sal_uInt16 nId )
 }
 
 /* --------------------------------------------------
- * SwEnterLeave::Ctor(..) wird vom eigentlichen (inline-)Kontruktor gerufen,
- * wenn die Funktion aufgezeichnet werden soll.
- * Die Aufgabe ist es abhaengig von der Funktion das richtige SwImplEnterLeave-Objekt
- * zu erzeugen, alles weitere geschieht dann in dessen Ctor/Dtor.
+ * SwEnterLeave::Ctor(..) is called from the (inline-)CTor if the function should
+ * be logged.
+ * The task here is to find the right SwImplEnterLeave object based on the
+ * function; everything else is then done in his Ctor/Dtor.
  * --------------------------------------------------*/
 void SwEnterLeave::Ctor( const SwFrm* pFrm, sal_uLong nFunc, sal_uLong nAct, void* pPar )
 {
@@ -773,9 +822,9 @@ void SwEnterLeave::Ctor( const SwFrm* pFrm, sal_uLong nFunc, sal_uLong nAct, voi
 }
 
 /* --------------------------------------------------
- * SwEnterLeave::Dtor() ruft lediglich den Destruktor des SwImplEnterLeave-Objekts,
- * ist nur deshalb nicht inline, damit die SwImplEnterLeave-Definition nicht
- * im dbg_lay.hxx zu stehen braucht.
+ * SwEnterLeave::Dtor() only calls the Dtor of the SwImplEnterLeave object. It's
+ * just no inline because we don't want the SwImplEnterLeave definition inside
+ * dbg_lay.hxx.
  * --------------------------------------------------*/
 
 void SwEnterLeave::Dtor()
commit fde84025da96ae2270ebd3ef9d779c284c650608
Author: Nicolas Christener <nicolas.christener at adfinis-sygroup.ch>
Date:   Wed Feb 15 22:30:06 2012 +0100

    translate german comments

diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index 5cd17ee..ff03015 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -969,7 +969,6 @@ void SwCntntFrm::Cut()
             pFrm->_InvalidatePos();
             pFrm->InvalidatePage( pPage );
         }
-        //Ausserdem kann eine Leerseite entstanden sein.
         //If I'm (was) the only CntntFrm in my upper, he has to do the
         //retouching.
         else
@@ -1076,12 +1075,12 @@ void SwLayoutFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 {
     OSL_ENSURE( pParent, "No parent for pasting." );
     OSL_ENSURE( pParent->IsLayoutFrm(), "Parent is CntntFrm." );
-    OSL_ENSURE( pParent != this, "Bin selbst der Parent." );
-    OSL_ENSURE( pSibling != this, "Bin mein eigener Nachbar." );
+    OSL_ENSURE( pParent != this, "I'm the parent oneself." );
+    OSL_ENSURE( pSibling != this, "I'm my own neighbour." );
     OSL_ENSURE( !GetPrev() && !GetNext() && !GetUpper(),
-            "Bin noch irgendwo angemeldet." );
+            "I'm still registered somewhere." );
 
-    //In den Baum einhaengen.
+    //Insert in the tree.
     InsertBefore( (SwLayoutFrm*)pParent, pSibling );
 
     // OD 24.10.2002 #103517# - correct setting of variable <fnRect>
@@ -1151,8 +1150,8 @@ void SwLayoutFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 
     if( (Frm().*fnRect->fnGetHeight)() )
     {
-        // AdjustNeighbourhood wird jetzt auch in Spalten aufgerufen,
-        // die sich nicht in Rahmen befinden
+        // AdjustNeighbourhood is now also called in columns which are not
+        // placed inside the frame
         sal_uInt8 nAdjust = GetUpper()->IsFtnBossFrm() ?
                 ((SwFtnBossFrm*)GetUpper())->NeighbourhoodAdjustment( this )
                 : NA_GROW_SHRINK;
@@ -1185,11 +1184,11 @@ void SwLayoutFrm::Cut()
     SWRECTFN( this )
     SwTwips nShrink = (Frm().*fnRect->fnGetHeight)();
 
-    //Erst removen, dann Upper Shrinken.
+    //Remove first, then shrink upper.
     SwLayoutFrm *pUp = GetUpper();
 
-    // AdjustNeighbourhood wird jetzt auch in Spalten aufgerufen,
-    // die sich nicht in Rahmen befinden
+    // AdjustNeighbourhood is now also called in columns which are not
+    // placed inside the frame
 
     // Remove must not be called before a AdjustNeighbourhood, but it has to
     // be called before the upper-shrink-call, if the upper-shrink takes care
@@ -1241,7 +1240,7 @@ void SwLayoutFrm::Cut()
 |*************************************************************************/
 SwTwips SwFrm::Grow( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 {
-    OSL_ENSURE( nDist >= 0, "Negatives Wachstum?" );
+    OSL_ENSURE( nDist >= 0, "Negative growth?" );
 
     PROTOCOL_ENTER( this, bTst ? PROT_GROW_TST : PROT_GROW, 0, &nDist )
 
@@ -1290,7 +1289,7 @@ SwTwips SwFrm::Grow( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 |*************************************************************************/
 SwTwips SwFrm::Shrink( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 {
-    OSL_ENSURE( nDist >= 0, "Negative Verkleinerung?" );
+    OSL_ENSURE( nDist >= 0, "Negative reduction?" );
 
     PROTOCOL_ENTER( this, bTst ? PROT_SHRINK_TST : PROT_SHRINK, 0, &nDist )
 
@@ -1333,50 +1332,46 @@ SwTwips SwFrm::Shrink( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 |*
 |*  SwFrm::AdjustNeighbourhood()
 |*
-|*  Beschreibung        Wenn sich die Groesse eines Frm's direkt unterhalb
-|*      eines Fussnotenbosses (Seite/Spalte) veraendert hat, so muss dieser
-|*      "Normalisiert" werden.
-|*      Es gibt dort immer einen Frame, der den "maximal moeglichen" Raum
-|*      einnimmt (der Frame, der den Body.Text enhaelt) und keinen oder
-|*      mehrere Frames die den Platz einnehmen den sie halt brauchen
-|*      (Kopf-/Fussbereich, Fussnoten).
-|*      Hat sich einer der Frames veraendert, so muss der Body-Text-Frame
-|*      entsprechen wachsen oder schrumpfen; unabhaegig davon, dass er fix ist.
-|*      !! Ist es moeglich dies allgemeiner zu loesen, also nicht auf die
-|*      Seite beschraenkt und nicht auf einen Speziellen Frame, der den
-|*      maximalen Platz einnimmt (gesteuert ueber Attribut FrmSize)? Probleme:
-|*      Was ist wenn mehrere Frames nebeneinander stehen, die den maximalen
-|*      Platz einnehmen?
-|*      Wie wird der Maximale Platz berechnet?
-|*      Wie klein duerfen diese Frames werden?
-|*
-|*      Es wird auf jeden Fall nur so viel Platz genehmigt, dass ein
-|*      Minimalwert fuer die Hoehe des Bodys nicht unterschritten wird.
-|*
-|*  Parameter: nDiff ist der Betrag, um den Platz geschaffen werden muss
+|*  Description         A Frm needs "normalization" if it is directly placed
+|*       below a footnote boss (page/column) and its size changed.
+|*       There's always a frame which takes the maximum possible space (the
+|*       frame which contains the Body.Text) and zero or more frames which
+|*       only take the space needed (header/footer area, footnote).
+|*       If one of frames changed, the body-text-frame has to grow or shrink
+|*       accordingly; even tough it's fixed.
+|*       !! Is it possible to do this in a generic way and not restrict it to
+|*       the page and a distinct frame which takes the maximum space (controlled
+|*       using the FrmSize attribute)? Problems: What if multiple frames taking
+|*       the maximum space are placed next to each other?
+|*       How is the maximum space calculated?
+|*       How small can those frames become?
+|*
+|*       In any case, only a certain amount of space is allowed, so we
+|*       never go below a minimum value for the height of the body.
+|*
+|*  Parameter: nDiff is the value around which the space has to be allocated
 |*
 |*************************************************************************/
 SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
 {
     PROTOCOL_ENTER( this, PROT_ADJUSTN, 0, &nDiff );
 
-    if ( !nDiff || !GetUpper()->IsFtnBossFrm() ) // nur innerhalb von Seiten/Spalten
+    if ( !nDiff || !GetUpper()->IsFtnBossFrm() ) // only inside pages/columns
         return 0L;
 
     const ViewShell *pSh = getRootFrm()->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
 
-    //Der (Page)Body veraendert sich nur im BrowseMode, aber nicht wenn er
-    //Spalten enthaelt.
+    //The (Page-)Body only changes in BrwoseMode, but only if it does not
+    //contain columns.
     if ( IsPageBodyFrm() && (!bBrowse ||
           (((SwLayoutFrm*)this)->Lower() &&
            ((SwLayoutFrm*)this)->Lower()->IsColumnFrm())) )
         return 0L;
 
-    //In der BrowseView kann der PageFrm selbst ersteinmal einiges von den
-    //Wuenschen abfangen.
+    //In BrowseView mode the PageFrm can handle some of the requests.
     long nBrowseAdd = 0;
-    if ( bBrowse && GetUpper()->IsPageFrm() ) // nur (Page)BodyFrms
+    if ( bBrowse && GetUpper()->IsPageFrm() ) // only (Page-)BodyFrms
     {
         ViewShell *pViewShell = getRootFrm()->GetCurrShell();
         SwLayoutFrm *pUp = GetUpper();
@@ -1399,8 +1394,7 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 SetCompletePaint();
                 if ( !pViewShell || pViewShell->VisArea().Height() >= pUp->Frm().Height() )
                 {
-                    //Ersteinmal den Body verkleinern. Der waechst dann schon
-                    //wieder.
+                    //First minimize Body, it will grow again later.
                     SwFrm *pBody = ((SwFtnBossFrm*)pUp)->FindBodyCont();
                     const long nTmp = nChg - pBody->Prt().Height();
                     if ( !bTst )
@@ -1423,20 +1417,19 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
         }
         else
         {
-            //Die Seite kann bis auf 0 schrumpfen. Die erste Seite bleibt
-            //mindestens so gross wie die VisArea.
+            //The page can shrink to 0. The fist page keeps the same size like
+            //VisArea.
             nChg = nDiff;
             long nInvaAdd = 0;
             if ( pViewShell && !pUp->GetPrev() &&
                  pUp->Frm().Height() + nDiff < pViewShell->VisArea().Height() )
             {
-                //Das heisst aber wiederum trotzdem, das wir geeignet invalidieren
-                //muessen.
+                //This means, that we have to invalidate adequate.
                 nChg = pViewShell->VisArea().Height() - pUp->Frm().Height();
                 nInvaAdd = -(nDiff - nChg);
             }
 
-            //Invalidieren inklusive unterem Rand.
+            //Invalidate including bottom border.
             long nBorder = nUpPrtBottom + 20;
             nBorder -= nChg;
             aInva.Top( aInva.Bottom() - (nBorder+nInvaAdd) );
@@ -1446,15 +1439,14 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 if ( !IsHeaderFrm() )
                     ((SwFtnBossFrm*)pUp)->FindBodyCont()->SetCompletePaint();
             }
-            //Wegen der Rahmen die Seite invalidieren. Dadurch wird die Seite
-            //wieder entsprechend gross wenn ein Rahmen nicht passt. Das
-            //funktioniert anderfalls nur zufaellig fuer absatzgebundene Rahmen
-            //(NotifyFlys).
+            //Invalidate the page because of the frames. Thereby the page becomes
+            //the right size again if a frame didn't fit. This only works
+            //randomly for paragraph bound frames otherwise (NotifyFlys).
             pUp->InvalidateSize();
         }
         if ( !bTst )
         {
-            //Unabhaengig von nChg
+            //Independent from nChg
             if ( pViewShell && aInva.HasArea() && pUp->GetUpper() )
                 pViewShell->InvalidateWindows( aInva );
         }
@@ -1469,7 +1461,7 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
             if ( GetNext() )
                 GetNext()->_InvalidatePos();
 
-            //Ggf. noch ein Repaint ausloesen.
+            //Trigger a repaint if necessary.
             const SvxGraphicPosition ePos = pUp->GetFmt()->GetBackground().GetGraphicPos();
             if ( ePos != GPOS_NONE && ePos != GPOS_TILED )
                 pViewShell->InvalidateWindows( pUp->Frm() );
@@ -1479,10 +1471,10 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 if ( pUp->GetNext() )
                     pUp->GetNext()->InvalidatePos();
 
-                //Mies aber wahr: im Notify am ViewImp wird evtl. ein Calc
-                //auf die Seite und deren Lower gerufen. Die Werte sollten
-                //unverandert bleiben, weil der Aufrufer bereits fuer die
-                //Anpassung von Frm und Prt sorgen wird.
+                //Sad but true: during notify on ViewImp a Calc on the page and
+                //its Lower may be called. The values should not be changed
+                //because the caller takes care of the adjustment of Frm and
+                //Prt.
                 const long nOldFrmHeight = Frm().Height();
                 const long nOldPrtHeight = Prt().Height();
                 const sal_Bool bOldComplete = IsCompletePaint();
@@ -1564,13 +1556,13 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
         if ( !pFrm )
             return 0;
 
-        //Wenn ich keinen finde eruebrigt sich alles weitere.
+        //If not one is found, everything else is solved.
         nReal = (pFrm->Frm().*fnRect->fnGetHeight)();
         if( nReal > nDiff )
             nReal = nDiff;
         if( !bFtnPage )
         {
-            //Minimalgrenze beachten!
+            //Respect the minimal boundary!
             if( nReal )
             {
                 const SwTwips nMax = pBoss->GetVarSpace();
@@ -1582,9 +1574,8 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 && ( pFrm->GetNext()->IsVertical() == IsVertical() )
                 )
             {
-                //Wenn der Body nicht genuegend her gibt, kann ich noch mal
-                //schauen ob es eine Fussnote gibt, falls ja kann dieser
-                //entsprechend viel gemopst werden.
+                //If the Body doesn't return enough, we look for a footnote, if
+                //there is one, we steal there accordingly.
                 const SwTwips nAddMax = (pFrm->GetNext()->Frm().*fnRect->
                                         fnGetHeight)();
                 nAdd = nDiff - nReal;
@@ -1634,11 +1625,12 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                     OSL_ENSURE( !pFly->IsFlyInCntFrm(), "FlyInCnt at Page?" );
                     const SwFmtVertOrient &rVert =
                                         pFly->GetFmt()->GetVertOrient();
-                   // Wann muss invalidiert werden?
-                   // Wenn ein Rahmen am SeitenTextBereich ausgerichtet ist,
-                   // muss bei Aenderung des Headers ein TOP, MIDDLE oder NONE,
-                   // bei Aenderung des Footers ein BOTTOM oder MIDDLE
-                   // ausgerichteter Rahmen seine Position neu berechnen.
+                    // When do we have to invalidate?
+                    // If a frame is aligned on a PageTextArea and the header
+                    // changes a TOP, MIDDLE or NONE aligned frame needs to
+                    // recalculate it's position; if the footer changes a BOTTOM
+                    // or MIDDLE aligned frame needs to recalculate it's
+                    // position.
                     if( ( rVert.GetRelationOrient() == text::RelOrientation::PRINT_AREA ||
                           rVert.GetRelationOrient() == text::RelOrientation::PAGE_PRINT_AREA )    &&
                         ((IsHeaderFrm() && rVert.GetVertOrient()!=text::VertOrientation::BOTTOM) ||
@@ -1855,7 +1847,7 @@ SwTwips SwCntntFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 
     const ViewShell *pSh = getRootFrm()->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
-    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body
+    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse with Body
     if( !(GetUpper()->GetType() & nTmpType) && GetUpper()->HasFixSize() )
     {
         if ( !bTst )
@@ -1890,7 +1882,7 @@ SwTwips SwCntntFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 
     if ( !bTst )
     {
-        //Cntnts werden immer auf den gewuenschten Wert gebracht.
+        //Cntnts are always resized to the wished value.
         long nOld = (Frm().*fnRect->fnGetHeight)();
         (Frm().*fnRect->fnSetHeight)( nOld + nDist );
         //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
@@ -1909,7 +1901,7 @@ SwTwips SwCntntFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
         }
     }
 
-    //Upper nur growen wenn notwendig.
+    //Only grow Upper if necessary.
     if ( nReal < nDist )
     {
         if( GetUpper() )
@@ -1959,7 +1951,7 @@ SwTwips SwCntntFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
     SWRECTFN( this )
     OSL_ENSURE( nDist >= 0, "nDist < 0" );
     OSL_ENSURE( nDist <= (Frm().*fnRect->fnGetHeight)(),
-            "nDist > als aktuelle Grosse." );
+            "nDist > than current size." );
 
     if ( !bTst )
     {
@@ -2058,11 +2050,10 @@ SwTwips SwCntntFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 
     if ( !bTst )
     {
-        //Die Position des naechsten Frm's veraendert sich auf jeden Fall.
+        //The position of the next Frm changes for sure.
         InvalidateNextPos();
 
-        //Wenn ich keinen Nachfolger habe, so muss ich mich eben selbst um
-        //die Retusche kuemmern.
+        //If I don't have a successor I have to do the retouch by myself.
         if ( !GetNext() )
             SetRetouche();
     }
@@ -2157,9 +2148,9 @@ void SwCntntFrm::_UpdateAttr( const SfxPoolItem* pOld, const SfxPoolItem* pNew,
     {
         case RES_FMT_CHG:
             rInvFlags = 0xFF;
-            /* kein break hier */
+            /* no break here */
 
-        case RES_PAGEDESC:                      //Attributaenderung (an/aus)
+        case RES_PAGEDESC:                      //attribute changes (on/off)
             if ( IsInDocBody() && !IsInTab() )
             {
                 rInvFlags |= 0x02;
@@ -2205,9 +2196,9 @@ void SwCntntFrm::_UpdateAttr( const SfxPoolItem* pOld, const SfxPoolItem* pNew,
                     // OD 2004-07-01 #i28701# - use new method <InvalidateObjs(..)>
                     GetIndNext()->InvalidateObjs( true );
                 }
-                Prepare( PREP_UL_SPACE );   //TxtFrm muss Zeilenabst. korrigieren.
+                Prepare( PREP_UL_SPACE );   //TxtFrm has to correct line spacing.
                 rInvFlags |= 0x80;
-                /* kein Break hier */
+                /* no break here */
             }
         case RES_LR_SPACE:
         case RES_BOX:
@@ -2365,7 +2356,7 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 {
     const ViewShell *pSh = getRootFrm()->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
-    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body
+    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse with Body
     if( !(GetType() & nTmpType) && HasFixSize() )
         return 0;
 
@@ -2406,7 +2397,7 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
     if ( nReal > 0 )
     {
         if ( GetUpper() )
-        {   // AdjustNeighbourhood jetzt auch in Spalten (aber nicht in Rahmen)
+        {   // AdjustNeighbourhood now only for the columns (but not in frames)
             sal_uInt8 nAdjust = GetUpper()->IsFtnBossFrm() ?
                 ((SwFtnBossFrm*)GetUpper())->NeighbourhoodAdjustment( this )
                 : NA_GROW_SHRINK;
@@ -2443,7 +2434,7 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 
                 if ( IsFtnFrm() && (nGrow != nReal) && GetNext() )
                 {
-                    //Fussnoten koennen ihre Nachfolger verdraengen.
+                    //Footnotes can replace their successor.
                     SwTwips nSpace = bTst ? 0 : -nDist;
                     const SwFrm *pFrm = GetUpper()->Lower();
                     do
@@ -2578,7 +2569,7 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
                    ((SwFtnBossFrm*)GetUpper())->NeighbourhoodAdjustment( this )
                    : NA_GROW_SHRINK;
 
-    // AdjustNeighbourhood auch in Spalten (aber nicht in Rahmen)
+    // AdjustNeighbourhood also in columns (but not in frames)
     if( NA_ONLY_ADJUST == nAdjust )
     {
         if ( IsPageBodyFrm() && !bBrowse )
@@ -2656,7 +2647,7 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
             {
                 if( IsTabFrm() )
                     ((SwTabFrm*)this)->SetComplete();
-                if ( Lower() )  //Kann auch im Join stehen und leer sein!
+                if ( Lower() )  //Can also be in the Join an be empty!
                     InvalidateNextPos();
             }
         }
@@ -2682,9 +2673,8 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
               0 != (pCnt = ((SwFtnFrm*)this)->GetRefFromAttr() ) )
         {
             if ( pCnt->IsFollow() )
-            {   // Wenn wir sowieso schon in einer anderen Spalte/Seite sitzen
-                // als der Frame mit der Referenz, dann brauchen wir nicht
-                // auch noch seinen Master zu invalidieren.
+            {   // If we are in an other column/page than the frame with the
+                // reference, we don't need to invalidate its master.
                 SwFrm *pTmp = pCnt->FindFtnBossFrm(sal_True) == FindFtnBossFrm(sal_True)
                               ?  pCnt->FindMaster()->GetFrm() : pCnt;
                 pTmp->Prepare( PREP_ADJUST_FRM );
@@ -2700,11 +2690,11 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 |*
 |*  SwLayoutFrm::ChgLowersProp()
 |*
-|*  Beschreibung        Aendert die Grosse der direkt untergeordneten Frm's
-|*      die eine Fixe Groesse haben, proportional zur Groessenaenderung der
-|*      PrtArea des Frm's.
-|*      Die Variablen Frm's werden auch proportional angepasst; sie werden
-|*      sich schon wieder zurechtwachsen/-schrumpfen.
+|*  Description          Changes the size of the directly subsidiary Frm's
+|*      which have a fixed size, proportionally to the size change of the
+|*      PrtArea of the Frm's.
+|*      The variable Frm's are also proportionally adapted; they will grow/shrink
+|*      again oneself.
 |*
 |*************************************************************************/
 void SwLayoutFrm::ChgLowersProp( const Size& rOldSize )
@@ -3063,9 +3053,8 @@ void SwLayoutFrm::ChgLowersProp( const Size& rOldSize )
 
         if ( !pLowerFrm->GetNext() && pLowerFrm->IsRetoucheFrm() )
         {
-            //Wenn ein Wachstum stattgefunden hat, und die untergeordneten
-            //zur Retouche faehig sind (derzeit Tab, Section und Cntnt), so
-            //trigger ich sie an.
+            //If a growth took place and the subordinate elements can retouch
+            //oneself (currently Tabs, Sections and Cntnt) we trigger it.
             if ( rOldSize.Height() < Prt().SSize().Height() ||
                  rOldSize.Width() < Prt().SSize().Width() )
                 pLowerFrm->SetRetouche();
@@ -3101,8 +3090,8 @@ void SwLayoutFrm::ChgLowersProp( const Size& rOldSize )
 |*
 |*  SwLayoutFrm::Format()
 |*
-|*  Beschreibung:       "Formatiert" den Frame; Frm und PrtArea.
-|*                      Die Fixsize wird hier nicht eingestellt.
+|*  Description:        "Formats" the Frame; Frm and PrtArea.
+|*                      The Fixsize is not set here.
 |*
 |*************************************************************************/
 void SwLayoutFrm::Format( const SwBorderAttrs *pAttrs )
@@ -3137,14 +3126,14 @@ void SwLayoutFrm::Format( const SwBorderAttrs *pAttrs )
             do
             {   bValidSize = sal_True;
 
-                //Die Groesse in der VarSize wird durch den Inhalt plus den
-                //Raendern bestimmt.
+                //The size in VarSize is calculated using the content plus the
+                //frames.
                 SwTwips nRemaining = 0;
                 SwFrm *pFrm = Lower();
                 while ( pFrm )
                 {   nRemaining += (pFrm->Frm().*fnRect->fnGetHeight)();
                     if( pFrm->IsTxtFrm() && ((SwTxtFrm*)pFrm)->IsUndersized() )
-                    // Dieser TxtFrm waere gern ein bisschen groesser
+                    // This TxtFrm would like to be a bit bigger
                         nRemaining += ((SwTxtFrm*)pFrm)->GetParHeight()
                                       - (pFrm->Prt().*fnRect->fnGetHeight)();
                     else if( pFrm->IsSctFrm() && ((SwSectionFrm*)pFrm)->IsUndersized() )
@@ -3162,10 +3151,10 @@ void SwLayoutFrm::Format( const SwBorderAttrs *pAttrs )
                         Grow( nDiff );
                     else
                         Shrink( -nDiff );
-                    //Schnell auf dem kurzen Dienstweg die Position updaten.
+                    //Updates the positions using the fast channel.
                     MakePos();
                 }
-                //Unterkante des Uppers nicht ueberschreiten.
+                //Don't exceed the bottom edge of the Upper.
                 if ( GetUpper() && (Frm().*fnRect->fnGetHeight)() )
                 {
                     const SwTwips nLimit = (GetUpper()->*fnRect->fnGetPrtBottom)();
@@ -3313,7 +3302,7 @@ long MA_FASTCALL lcl_CalcMinColDiff( SwLayoutFrm *pLayFrm )
                     nDiff = nDiff ? Min( nDiff, nTmp ) : nTmp;
             }
         }
-        //Leere Spalten ueberspringen!
+        //Skip empty columns!
         pCol = (SwLayoutFrm*)pCol->GetNext();
         while ( pCol && 0 == (pFrm = pCol->Lower()) )
             pCol = (SwLayoutFrm*)pCol->GetNext();
@@ -3357,20 +3346,16 @@ sal_Bool lcl_IsFlyHeightClipped( SwLayoutFrm *pLay )
 void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                                    const SwTwips nBorder, const SwTwips nMinHeight )
 {
-    //Wenn Spalten im Spiel sind, so wird die Groesse an der
-    //letzten Spalte ausgerichtet.
-    //1. Inhalt formatieren.
-    //2. Hoehe der letzten Spalte ermitteln, wenn diese zu
-    //   zu gross ist muss der Fly wachsen.
-    //   Der Betrag um den der Fly waechst ist aber nicht etwa
-    //   der Betrag des Ueberhangs, denn wir muessen davon
-    //   ausgehen, dass etwas Masse zurueckfliesst und so
-    //   zusaetzlicher Platz geschaffen wird.
-    //   Im Ersten Ansatz ist der Betrag um den gewachsen wird
-    //   der Ueberhang geteilt durch die Spaltenanzahl oder
-    //   der Ueberhang selbst wenn er kleiner als die Spalten-
-    //   anzahl ist.
-    //3. Weiter mit 1. bis zur Stabilitaet.
+    //If there are columns involved, the size is adjusted using the last column.
+    //1. Format content.
+    //2. Calculate height of the last column if it's too big, the Fly has to
+    //   grow. The amount by which the Fly grows is not the amount of the
+    //   overhang because we have to act on the assumption that some bulk floats
+    //   back which will generate some more space.
+    //   In the first paragraph the amount which we grow by equals the overhang
+    //   divided by the amount of columns or the overhang itself if it's smaller
+    //   than the amount of columns.
+    //3. Go back to 1. until everything is stable.
 
     const SwFmtCol &rCol = rAttrs.GetAttrSet().GetCol();
     const sal_uInt16 nNumCols = rCol.GetNumCols();
@@ -3380,34 +3365,33 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
     ViewShell *pSh = getRootFrm()->GetCurrShell();
     SwViewImp *pImp = pSh ? pSh->Imp() : 0;
     {
-        // Zugrunde liegender Algorithmus
-        // Es wird versucht, eine optimale Hoehe fuer die Spalten zu finden.
-        // nMinimum beginnt mit der uebergebenen Mindesthoehe und wird dann als
-        // Maximum der Hoehen gepflegt, bei denen noch Spalteninhalt aus einer
-        // Spalte herausragt.
-        // nMaximum beginnt bei LONG_MAX und wird als Minimum der Hoehen gepflegt,
-        // bei denen der Inhalt gepasst hat.
-        // Bei spaltigen Bereichen beginnt nMaximum bei dem maximalen Wert, den
-        // die Umgebung vorgibt, dies kann natuerlich ein Wert sein, bei dem noch
-        // Inhalt heraushaengt.
-        // Es werden die Spalten formatiert, wenn Inhalt heraushaengt, wird nMinimum
-        // ggf. angepasst, dann wird gewachsen, mindestens um nMinDiff, aber nicht ueber
-        // ein groesseres nMaximum hinaus. Wenn kein Inhalt heraushaengt, sondern
-        // noch Luft in einer Spalte ist, schrumpfen wir entsprechend, mindestens um
-        // nMinDiff, aber nicht unter das nMinimum.
-        // Abgebrochen wird, wenn kein Inhalt mehr heraushaengt und das Minimum sich auf
-        // weniger als ein MinDiff dem Maximum angenaehert hat oder das von der
-        // Umgebung vorgegebene Maximum erreicht ist und trotzdem Inhalt heraus-
-        // haengt.
-
-        // Kritik an der Implementation
-        // 1. Es kann theoretisch Situationen geben, in denen der Inhalt in einer geringeren
-        // Hoehe passt und in einer groesseren Hoehe nicht passt. Damit der Code robust
-        // gegen solche Verhaeltnisse ist, sind ein paar Abfragen bezgl. Minimum und Maximum
-        // drin, die wahrscheinlich niemals zuschlagen koennen.
-        // 2. Es wird fuer das Schrumpfen das gleiche nMinDiff benutzt wie fuer das Wachstum,
-        // das nMinDiff ist allerdings mehr oder weniger die kleinste erste Zeilenhoehe und
-        // als Mindestwert fuer das Schrumpfen nicht unbedingt optimal.
+        // Underlying algorithm
+        // We try to find the optimal height for the column.
+        // nMinimum starts with the passed minimum height and is then remembered
+        // as the maximum height on which column content still juts out of a
+        // column.
+        // nMaximum starts with LONG_MAX and is then remembered as the minimum
+        // width on which the content fitted.
+        // In column based sections nMaximum starts at the maximum value which
+        // the surrounding defines, this can certainly be a value on which
+        // content still juts out.
+        // If content still juts out, the columns are formated and nMinimum is
+        // adjusted accordingly, then the growth is done, at least by uMinDiff
+        // but not over a certain nMaximum. If no content juts out but there is
+        // still some space left in the column, shrinking is done accordingly, at
+        // least by nMindIff but not below the nMinimum.
+        // Cancel as soon as no content juts out and the difference from minimum
+        // to maximum is less than MinDiff or the maximum which was defined by
+        // the surrounding is reached even if some content still juts out.
+
+        // Criticism of this implementation
+        // 1. Theoretically situations are possible in which the content fits in
+        // a lower height but not in a higher height. To ensure that the code
+        // handles such situations the code contains a few checks concerning
+        // minimum and maximum which probably are never triggered.
+        // 2. We use the same nMinDiff for shrinking and growing, but nMinDiff
+        // is more or less the smallest first line height and doesn't fit ideal
+        // as minimum value.
 
         long nMinimum = nMinHeight;
         long nMaximum;
@@ -3480,15 +3464,14 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
         }
         do
         {
-            //Kann eine Weile dauern, deshalb hier auf Waitcrsr pruefen.
+            //Could take a while therefore check for Waitcrsr here.
             if ( pImp )
                 pImp->CheckWaitCrsr();
 
             bValidSize = sal_True;
-            //Erstmal die Spalten formatieren, das entlastet den
-            //Stack ein wenig.
-            //Bei der Gelegenheit stellen wir auch gleich mal die
-            //Breiten und Hoehen der Spalten ein (so sie denn falsch sind).
+            //First format the column as this will relieve the stack a bit.
+            //Also set width and height of the column (if they are wrong)
+            //while we are at it.
             SwLayoutFrm *pCol = (SwLayoutFrm*)Lower();
 
             // #i27399#
@@ -3499,7 +3482,7 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             for ( sal_uInt16 i = 0; i < nNumCols; ++i )
             {
                 pCol->Calc();
-                // ColumnFrms besitzen jetzt einen BodyFrm, der auch kalkuliert werden will
+                // ColumnFrms have a BodyFrm now, which need to be calculated too
                 pCol->Lower()->Calc();
                 if( pCol->Lower()->GetNext() )
                     pCol->Lower()->GetNext()->Calc();  // SwFtnCont
@@ -3509,8 +3492,8 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             ::CalcCntnt( this );
 
             pCol = (SwLayoutFrm*)Lower();
-            OSL_ENSURE( pCol && pCol->GetNext(), ":-( Spalten auf Urlaub?");
-            // bMinDiff wird gesetzt, wenn es keine leere Spalte gibt
+            OSL_ENSURE( pCol && pCol->GetNext(), ":-( column making holidays?");
+            // set bMinDiff if no empty columns exist
             sal_Bool bMinDiff = sal_True;
             // OD 28.03.2003 #108446# - check for all column content and all columns
             while ( bMinDiff && pCol )
@@ -3524,7 +3507,7 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             SwTwips nDiff = 0;
             SwTwips nMaxFree = 0;
             SwTwips nAllFree = LONG_MAX;
-            // bFoundLower wird gesetzt, wenn es mind. eine nichtleere Spalte gibt
+            // set bFoundLower if there is at least one non-empty column
             sal_Bool bFoundLower = sal_False;
             while( pCol )
             {
@@ -3567,59 +3550,59 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             if ( bFoundLower || ( IsSctFrm() && ((SwSectionFrm*)this)->HasFollow() ) )
             {
                 SwTwips nMinDiff = ::lcl_CalcMinColDiff( this );
-                // Hier wird entschieden, ob wir wachsen muessen, naemlich wenn
-                // ein Spalteninhalt (nDiff) oder ein Fly herausragt.
-                // Bei spaltigen Bereichen wird beruecksichtigt, dass mit dem
-                // Besitz eines nichtleeren Follows die Groesse festgelegt ist.
+                // Here we decide if growing is needed - this is the case, if
+                // column content (nDiff) or a Fly juts over.
+                // In sections with columns we take into account to set the size
+                // when having a non-empty Follow.
                 if ( nDiff || ::lcl_IsFlyHeightClipped( this ) ||
                      ( IsSctFrm() && ((SwSectionFrm*)this)->CalcMinDiff( nMinDiff ) ) )
                 {
                     long nPrtHeight = (Prt().*fnRect->fnGetHeight)();
-                    // Das Minimum darf nicht kleiner sein als unsere PrtHeight,
-                    // solange noch etwas herausragt.
+                    // The minimum must not be smaller than our PrtHeight as
+                    // long as something juts over.
                     if( nMinimum < nPrtHeight )
                         nMinimum = nPrtHeight;
-                    // Es muss sichergestellt sein, dass das Maximum nicht kleiner
-                    // als die PrtHeight ist, wenn noch etwas herausragt
+                    // The maximum must not be smaller than PrtHeight if
+                    // something still juts over.
                     if( nMaximum < nPrtHeight )
-                        nMaximum = nPrtHeight;  // Robust, aber kann das ueberhaupt eintreten?
-                    if( !nDiff ) // wenn nur Flys herausragen, wachsen wir um nMinDiff
+                        nMaximum = nPrtHeight;  // Robust, but will this ever happen?
+                    if( !nDiff ) // If only Flys jut over, we grow by nMinDiff
                         nDiff = nMinDiff;
-                    // Wenn wir um mehr als nMinDiff wachsen wollen, wird dies auf die
-                    // Spalten verteilt
+                    // If we should grow more than by nMindDiff we split it over
+                    // the columns
                     if ( Abs(nDiff - nMinDiff) > nNumCols && nDiff > (long)nNumCols )
                         nDiff /= nNumCols;
 
                     if ( bMinDiff )
-                    {   // Wenn es keinen leeren Spalten gibt, wollen wir mind. um nMinDiff
-                        // wachsen. Sonderfall: Wenn wir kleiner als die minimale Frmhoehe
-                        // sind und die PrtHeight kleiner als nMinDiff ist, wachsen wir so,
-                        // dass die PrtHeight hinterher genau nMinDiff ist.
+                    {   // If no empty column exists, we want to grow at least
+                        // by nMinDiff. Special case: If we are smaller than the
+                        // minimal FrmHeight and PrtHeight is smaller than
+                        // nMindiff we grow in a way that PrtHeight is exactly
+                        // nMinDiff afterwards.
                         long nFrmHeight = (Frm().*fnRect->fnGetHeight)();
                         if ( nFrmHeight > nMinHeight || nPrtHeight >= nMinDiff )
                             nDiff = Max( nDiff, nMinDiff );
                         else if( nDiff < nMinDiff )
                             nDiff = nMinDiff - nPrtHeight + 1;
                     }
-                    // nMaximum ist eine Groesse, in der der Inhalt gepasst hat,
-                    // oder der von der Umgebung vorgegebene Wert, deshalb
-                    // brauchen wir nicht ueber diesen Wrt hinauswachsen.
+                    // nMaximum has a size which fits the content or the
+                    // requested value from the surrounding therefore we don't
+                    // need to exceed this value.
                     if( nDiff + nPrtHeight > nMaximum )
                         nDiff = nMaximum - nPrtHeight;
                 }
-                else if( nMaximum > nMinimum ) // Wir passen, haben wir auch noch Spielraum?
+                else if( nMaximum > nMinimum ) // We fit, do we still have some margin?
                 {
                     long nPrtHeight = (Prt().*fnRect->fnGetHeight)();
                     if ( nMaximum < nPrtHeight )
-                        nDiff = nMaximum - nPrtHeight; // wir sind ueber eine funktionierende
-                        // Hoehe hinausgewachsen und schrumpfen wieder auf diese zurueck,
-                        // aber kann das ueberhaupt eintreten?
+                        nDiff = nMaximum - nPrtHeight; // We grew over a working
+                        // height and shrink back it, but will this ever happen?
                     else
-                    {   // Wir haben ein neues Maximum, eine Groesse, fuer die der Inhalt passt.
+                    {   // We have a new maximum, a size which fits for the content.
                         nMaximum = nPrtHeight;
-                        // Wenn der Freiraum in den Spalten groesser ist als nMinDiff und wir
-                        // nicht dadurch wieder unter das Minimum rutschen, wollen wir ein wenig
-                        // Luft herauslassen.
+                        // If the margin in the column is bigger than nMinDiff
+                        // and we therefore drop under the minimum, we deflate
+                        // a bit.
                         if ( !bNoBalance &&
                              // #i23129# - <nMinDiff> can be
                              // big, because of an object at the beginning of
@@ -3629,10 +3612,10 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                              ( !nAllFree ||
                                nMinimum < nPrtHeight - nMinDiff ) )
                         {
-                            nMaxFree /= nNumCols; // auf die Spalten verteilen
-                            nDiff = nMaxFree < nMinDiff ? -nMinDiff : -nMaxFree; // mind. nMinDiff
-                            if( nPrtHeight + nDiff <= nMinimum ) // Unter das Minimum?
-                                nDiff = ( nMinimum - nMaximum ) / 2; // dann lieber die Mitte
+                            nMaxFree /= nNumCols; // disperse over the columns
+                            nDiff = nMaxFree < nMinDiff ? -nMinDiff : -nMaxFree; // min nMinDiff
+                            if( nPrtHeight + nDiff <= nMinimum ) // below the minimum?
+                                nDiff = ( nMinimum - nMaximum ) / 2; // Take the center
                         }
                         else if( nAllFree )
                         {
@@ -3642,7 +3625,7 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                         }
                     }
                 }
-                if( nDiff ) // jetzt wird geschrumpft oder gewachsen..
+                if( nDiff ) // now we shrink or grow...
                 {
                     Size aOldSz( Prt().SSize() );
                     long nTop = (this->*fnRect->fnGetTopMargin)();
@@ -3675,10 +3658,9 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                             }
                         }
                     }
-                    //Es muss geeignet invalidiert werden, damit
-                    //sich die Frms huebsch ausbalancieren
-                    //- Der jeweils erste ab der zweiten Spalte bekommt
-                    //  ein InvalidatePos();
+                    //Invalidate suitable to nicely balance the Frms.
+                    //- Every first one after the second column gets a
+                    //  InvalidatePos();
                     pCol = (SwLayoutFrm*)Lower()->GetNext();
                     while ( pCol )
                     {
@@ -3689,9 +3671,8 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                     }
                     if( IsSctFrm() && ((SwSectionFrm*)this)->HasFollow() )
                     {
-                        // Wenn wir einen Follow erzeugt haben, muessen wir
-                        // seinem Inhalt die Chance geben, im CalcCntnt
-                        // zurueckzufliessen
+                        // If we created a Follow, we need to give its content
+                        // the opportunity to flow back inside the CalcCntnt
                         SwCntntFrm* pTmpCntnt =
                             ((SwSectionFrm*)this)->GetFollow()->ContainsCntnt();
                         if( pTmpCntnt )
@@ -3728,9 +3709,9 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
 SwCntntFrm* lcl_InvalidateSection( SwFrm *pCnt, sal_uInt8 nInv )
 {
     SwSectionFrm* pSect = pCnt->FindSctFrm();
-    // Wenn unser CntntFrm in einer Tabelle oder Fussnote steht, sind nur
-    // Bereiche gemeint, die ebenfalls innerhalb liegen.
-    // Ausnahme: Wenn direkt eine Tabelle uebergeben wird.
+    // If our CntntFrm is placed inside a table or a footnote, only sections
+    // which are also placed inside are meant.
+    // Exception: If a table is directly passed.
     if( ( ( pCnt->IsInTab() && !pSect->IsInTab() ) ||
         ( pCnt->IsInFtn() && !pSect->IsInFtn() ) ) && !pCnt->IsTabFrm() )
         return NULL;
@@ -3773,7 +3754,7 @@ void lcl_InvalidateCntnt( SwCntntFrm *pCnt, sal_uInt8 nInv )
         {
             if( pCnt->IsInSct() )
             {
-                // Siehe oben bei Tabellen
+                // See above at tables
                 if( !pLastSctCnt )
                     pLastSctCnt = lcl_InvalidateSection( pCnt, nInv );
                 if( pLastSctCnt == pCnt )
@@ -3788,14 +3769,14 @@ void lcl_InvalidateCntnt( SwCntntFrm *pCnt, sal_uInt8 nInv )
         {
             if( pCnt->IsInTab() )
             {
-                // Um nicht fuer jeden CntntFrm einer Tabelle das FindTabFrm() zu rufen
-                // und wieder die gleiche Tabelle zu invalidieren, merken wir uns den letzten
-                // CntntFrm der Tabelle und reagieren erst wieder auf IsInTab(), wenn wir
-                // an diesem vorbei sind.
-                // Beim Eintritt in die Tabelle wird der LastSctCnt auf Null gesetzt,
-                // damit Bereiche im Innern der Tabelle richtig invalidiert werden.
-                // Sollte die Tabelle selbst in einem Bereich stehen, so wird an
-                // diesem die Invalidierung bis zu dreimal durchgefuehrt, das ist vertretbar.
+                // To not call FindTabFrm() for each CntntFrm of a table and
+                // then invalidate the table, we remember the last CntntFrm of
+                // the table and stop to react to IsInTab() until we passed it
+                // up.
+                // When entering the table, LastSctCnt is set to null, so areas
+                // inside the table are correctly invalidated.
+                // If the table itself is placed in such an area the
+                // invalidation is done three times, which is acceptable.
                 if( !pLastTabCnt )
                 {
                     pLastTabCnt = lcl_InvalidateTable( pCnt->FindTabFrm(), nInv );
@@ -3848,7 +3829,7 @@ void lcl_InvalidateAllCntnt( SwCntntFrm *pCnt, sal_uInt8 nInv )
 
 void SwRootFrm::InvalidateAllCntnt( sal_uInt8 nInv )
 {
-    // Erst werden alle Seitengebundenen FlyFrms abgearbeitet.
+    // First process all page bound FlyFrms.
     SwPageFrm *pPage = (SwPageFrm*)Lower();
     while( pPage )
     {
@@ -3857,7 +3838,7 @@ void SwRootFrm::InvalidateAllCntnt( sal_uInt8 nInv )
         pPage->InvalidateFlyInCnt();
         pPage->InvalidateLayout();
         pPage->InvalidateCntnt();
-        pPage->InvalidatePage( pPage ); //Damit ggf. auch der Turbo verschwindet
+        pPage->InvalidatePage( pPage ); // So even the Turbo disappears if applicable
 
         if ( pPage->GetSortedObjs() )
         {
@@ -3879,7 +3860,7 @@ void SwRootFrm::InvalidateAllCntnt( sal_uInt8 nInv )
         pPage = (SwPageFrm*)(pPage->GetNext());
     }
 
-    //Hier den gesamten Dokumentinhalt und die zeichengebundenen Flys.
+    //Invalidate the whole document content and the drawn Flys here.
     ::lcl_InvalidateCntnt( ContainsCntnt(), nInv );
 
     if( nInv & INV_PRTAREA )
commit 4e760ffe88e2c461c69310aff48a44b4f421ff67
Author: Nicolas Christener <nicolas.christener at adfinis-sygroup.ch>
Date:   Mon Feb 13 11:38:19 2012 +0100

    translate german comments

diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index 737f45c..5cd17ee 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -101,7 +101,7 @@ SwFrm::SwFrm( SwModify *pMod, SwFrm* pSib ) :
     bInfFtn ( sal_False ),
     bInfSct ( sal_False )
 {
-    OSL_ENSURE( pMod, "Kein Frameformat uebergeben." );
+    OSL_ENSURE( pMod, "No frame format passed." );
     bInvalidR2L = bInvalidVert = 1;
     //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
     bDerivedR2L = bDerivedVert = bRightToLeft = bVertical = bReverse = bVertLR = 0;
@@ -308,7 +308,7 @@ void SwFrm::_UpdateAttrFrm( const SfxPoolItem *pOld, const SfxPoolItem *pNew,
         case RES_BOX:
         case RES_SHADOW:
             Prepare( PREP_FIXSIZE_CHG );
-            // hier kein break !
+            // no break here!
         case RES_LR_SPACE:
         case RES_UL_SPACE:
             rInvFlags |= 0x0B;
@@ -351,7 +351,7 @@ void SwFrm::_UpdateAttrFrm( const SfxPoolItem *pOld, const SfxPoolItem *pNew,
             break;
         }
         case RES_COL:
-            OSL_FAIL( "Spalten fuer neuen FrmTyp?" );
+            OSL_FAIL( "Columns for new FrmTyp?" );
             break;
 
         default:
@@ -372,9 +372,9 @@ void SwFrm::Prepare( const PrepareHint, const void *, sal_Bool )
 /*************************************************************************
 |*
 |*    SwFrm::InvalidatePage()
-|*    Beschreibung:     Invalidiert die Seite, in der der Frm gerade steht.
-|*      Je nachdem ob es ein Layout, Cntnt oder FlyFrm ist wird die Seite
-|*      entsprechend Invalidiert.
+|*    Description:      Invalidates the page in which the Frm is placed
+|*      currently. The page is invalidated depending on the type (Layout,
+|*      Cntnt, FlyFrm)
 |*
 |*************************************************************************/
 void SwFrm::InvalidatePage( const SwPageFrm *pPage ) const
@@ -414,16 +414,16 @@ void SwFrm::InvalidatePage( const SwPageFrm *pPage ) const
         {
             if ( pRoot->IsTurboAllowed() )
             {
-                // JP 21.09.95: wenn sich der ContentFrame 2 mal eintragen
-                //              will, kann es doch eine TurboAction bleiben.
-                //  ODER????
+                // JP 21.09.95: it can still be a TurboAction if the
+                // ContentFrame wants to register a second time.
+                //  RIGHT????
                 if ( !pRoot->GetTurbo() || this == pRoot->GetTurbo() )
                     pRoot->SetTurbo( (const SwCntntFrm*)this );
                 else
                 {
                     pRoot->DisallowTurbo();
-                    //Die Seite des Turbo koennte eine andere als die meinige
-                    //sein, deshalb muss sie invalidiert werden.
+                    //The page of the Turbo could be a different one then mine,
+                    //therefore we have to invalidate it.
                     const SwFrm *pTmp = pRoot->GetTurbo();
                     pRoot->ResetTurbo();
                     pTmp->InvalidatePage();
@@ -530,9 +530,9 @@ Size SwFrm::ChgSize( const Size& aNewSize )
                         GetUpper()->_InvalidateSize();
                 }
 
-                // Auch wenn das Grow/Shrink noch nicht die gewuenschte Breite eingestellt hat,
-                // wie z.B. beim Aufruf durch ChgColumns, um die Spaltenbreiten einzustellen,
-                // wird die Breite jetzt gesetzt.
+                // Even if grow/shrink did not yet set the desired width, for
+                // example when called by ChgColumns to set the column width, we
+                // set the right width now.
                 (aFrm.*fnRect->fnSetHeight)( nNew );
             }
         }
@@ -567,22 +567,21 @@ Size SwFrm::ChgSize( const Size& aNewSize )
 |*
 |*  SwFrm::InsertBefore()
 |*
-|*  Beschreibung        SwFrm wird in eine bestehende Struktur eingefuegt
-|*                      Eingefuegt wird unterhalb des Parent und entweder
-|*                      vor pBehind oder am Ende der Kette wenn pBehind
-|*                      leer ist.
+|*  Description         SwFrm is inserted into an existing structure.
+|*                      Insertion is done below the parent and either before
+|*                      pBehind or at the end of the chain if pBehind is empty.
 |*
 |*************************************************************************/
 void SwFrm::InsertBefore( SwLayoutFrm* pParent, SwFrm* pBehind )
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Insert." );
+    OSL_ENSURE( pParent, "No parent for insert." );
     OSL_ENSURE( (!pBehind || (pBehind && pParent == pBehind->GetUpper())),
-            "Framebaum inkonsistent." );
+            "Frame tree is inconsistent." );
 
     pUpper = pParent;
     pNext = pBehind;
     if( pBehind )
-    {   //Einfuegen vor pBehind.
+    {   //Inert before pBehind.
         if( 0 != (pPrev = pBehind->pPrev) )
             pPrev->pNext = this;
         else
@@ -590,7 +589,7 @@ void SwFrm::InsertBefore( SwLayoutFrm* pParent, SwFrm* pBehind )
         pBehind->pPrev = this;
     }
     else
-    {   //Einfuegen am Ende, oder als ersten Node im Unterbaum
+    {   //Insert at the end, or as first node in the sub tree
         pPrev = pUpper->Lower();
         if ( pPrev )
         {
@@ -607,30 +606,30 @@ void SwFrm::InsertBefore( SwLayoutFrm* pParent, SwFrm* pBehind )
 |*
 |*  SwFrm::InsertBehind()
 |*
-|*  Beschreibung        SwFrm wird in eine bestehende Struktur eingefuegt
-|*                      Eingefuegt wird unterhalb des Parent und entweder
-|*                      hinter pBefore oder am Anfang der Kette wenn pBefore
-|*                      leer ist.
+|*  Description         SwFrm is inserted in an existing structure.
+|*                      Insertion is done below the parent and either behind
+|*                      pBefore or at the beginning of the chain if pBefore is
+|*                      empty.
 |*
 |*************************************************************************/
 void SwFrm::InsertBehind( SwLayoutFrm *pParent, SwFrm *pBefore )
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Insert." );
+    OSL_ENSURE( pParent, "No Parent for Insert." );
     OSL_ENSURE( (!pBefore || (pBefore && pParent == pBefore->GetUpper())),
-            "Framebaum inkonsistent." );
+            "Frame tree is inconsistent." );
 
     pUpper = pParent;
     pPrev = pBefore;
     if ( pBefore )
     {
-        //Einfuegen hinter pBefore
+        //Insert after pBefore
         if ( 0 != (pNext = pBefore->pNext) )
             pNext->pPrev = this;
         pBefore->pNext = this;
     }
     else
     {
-        //Einfuegen am Anfang der Kette
+        //Insert at the beginning of the chain
         pNext = pParent->Lower();
         if ( pParent->Lower() )
             pParent->Lower()->pPrev = this;
@@ -642,31 +641,28 @@ void SwFrm::InsertBehind( SwLayoutFrm *pParent, SwFrm *pBefore )
 |*
 |*  SwFrm::InsertGroup()
 |*
-|*  Beschreibung        Eine Kette von SwFrms wird in eine bestehende Struktur
-|*                      eingefuegt
+|*  Description         A chain of SwFrms gets inserted in an existing structure
 |*
-|*  Bisher wird dies genutzt, um einen SectionFrame, der ggf. schon Geschwister
-|*  mit sich bringt, in eine bestehende Struktur einzufuegen.
+|*  Until now this is used to insert a SectionFrame which may has some siblings
+|*  into an existing structure.
 |*
-|*  Wenn man den dritten Parameter als NULL uebergibt, entspricht
-|*  diese Methode dem SwFrm::InsertBefore(..), nur eben mit Geschwistern.
+|*  If the third parameter is NULL, this method is (besides handling the
+|*  siblings) equal to SwFrm::InsertBefore(..)
 |*
-|*  Wenn man einen dritten Parameter uebergibt, passiert folgendes:
-|*  this wird pNext von pParent,
-|*  pSct wird pNext vom Letzten der this-Kette,
-|*  pBehind wird vom pParent an den pSct umgehaengt.
-|*  Dies dient dazu: ein SectionFrm (this) wird nicht als
-|*  Kind an einen anderen SectionFrm (pParent) gehaengt, sondern pParent
-|*  wird in zwei Geschwister aufgespalten (pParent+pSct) und this dazwischen
-|*  eingebaut.
+|*  If the third parameter is passed, the following happens:
+|*  - this becomes pNext of pParent
+|*  - pSct becomes pNext of the last on in the this-chains
+|*  - pBehind is reconnected from pParent to pSct
+|*  This leads to: a SectionFrm (pParent) won't be connected, but pParent get
+|*  split up into two siblings (pParent+pSect) and inserted between.
 |*
 |*************************************************************************/
 void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Insert." );
+    OSL_ENSURE( pParent, "No parent for insert." );
     OSL_ENSURE( (!pBehind || ( (pBehind && (pParent == pBehind->GetUpper()))
             || ((pParent->IsSctFrm() && pBehind->GetUpper()->IsColBodyFrm())) ) ),
-            "Framebaum inkonsistent." );
+            "Frame tree inconsistent." );
     if( pSct )
     {
         pUpper = pParent->GetUpper();
@@ -698,7 +694,7 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
             pLast->pUpper = GetUpper();
         }
         if( pBehind )
-        {   //Einfuegen vor pBehind.
+        {   //Insert befor pBehind.
             if( pBehind->GetPrev() )
                 pBehind->GetPrev()->pNext = NULL;
             else
@@ -737,7 +733,7 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
         }
         pLast->pNext = pBehind;
         if( pBehind )
-        {   //Einfuegen vor pBehind.
+        {   //Insert befor pBehind.
             if( 0 != (pPrev = pBehind->pPrev) )
                 pPrev->pNext = this;
             else
@@ -745,7 +741,7 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
             pBehind->pPrev = pLast;
         }
         else
-        {   //Einfuegen am Ende, oder des ersten Nodes im Unterbaum
+            //Insert at the end, or ... the first node in the subtree
             pPrev = pUpper->Lower();
             if ( pPrev )
             {
@@ -766,20 +762,20 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
 |*************************************************************************/
 void SwFrm::Remove()
 {
-    OSL_ENSURE( pUpper, "Removen ohne Upper?" );
+    OSL_ENSURE( pUpper, "Remove without upper?" );
 
     if( pPrev )
-        // einer aus der Mitte wird removed
+        // one out of the middle is removed
         pPrev->pNext = pNext;
     else
-    {   // der erste in einer Folge wird removed
-        OSL_ENSURE( pUpper->pLower == this, "Layout inkonsistent." );
+    {   // the first in a list is removed //TODO
+        OSL_ENSURE( pUpper->pLower == this, "Layout is inconsistent." );
         pUpper->pLower = pNext;
     }
     if( pNext )
         pNext->pPrev = pPrev;
 
-    // Verbindung kappen.
+    // Remove link
     pNext  = pPrev  = 0;
     pUpper = 0;
 }
@@ -790,16 +786,16 @@ void SwFrm::Remove()
 |*************************************************************************/
 void SwCntntFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Paste." );
-    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent ist CntntFrm." );
-    OSL_ENSURE( pParent != this, "Bin selbst der Parent." );
-    OSL_ENSURE( pSibling != this, "Bin mein eigener Nachbar." );
+    OSL_ENSURE( pParent, "No parent for pasting." );
+    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent is CntntFrm." );
+    OSL_ENSURE( pParent != this, "I'm the parent." );
+    OSL_ENSURE( pSibling != this, "I'm my own neighbour." );
     OSL_ENSURE( !GetPrev() && !GetNext() && !GetUpper(),
-            "Bin noch irgendwo angemeldet." );
+            "I'm still registered somewhere" );
     OSL_ENSURE( !pSibling || pSibling->IsFlowFrm(),
             "<SwCntntFrm::Paste(..)> - sibling not of expected type." );
 
-    //In den Baum einhaengen.
+    //Insert in the tree.
     InsertBefore( (SwLayoutFrm*)pParent, pSibling );
 
     SwPageFrm *pPage = FindPageFrm();
@@ -835,13 +831,13 @@ void SwCntntFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
     if ( GetPrev() )
     {
         if ( IsFollow() )
-            //Ich bin jetzt direkter Nachfolger meines Masters geworden
+            //I'm a direct follower of my master now
             ((SwCntntFrm*)GetPrev())->Prepare( PREP_FOLLOW_FOLLOWS );
         else
         {
             if ( GetPrev()->Frm().Height() !=
                  GetPrev()->Prt().Height() + GetPrev()->Prt().Top() )
-                //Umrandung zu beruecksichtigen?
+                //Take the frame into account?
                 GetPrev()->_InvalidatePrt();
             // OD 18.02.2003 #104989# - force complete paint of previous frame,
             // if frame is inserted at the end of a section frame, in order to
@@ -895,7 +891,7 @@ void SwCntntFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 |*************************************************************************/
 void SwCntntFrm::Cut()
 {
-    OSL_ENSURE( GetUpper(), "Cut ohne Upper()." );
+    OSL_ENSURE( GetUpper(), "Cut without Upper()." );
 
     SwPageFrm *pPage = FindPageFrm();
     InvalidatePage( pPage );
@@ -935,8 +931,9 @@ void SwCntntFrm::Cut()
     }
 
     if( 0 != (pFrm = GetIndNext()) )
-    {   //Der alte Nachfolger hat evtl. einen Abstand zum Vorgaenger
-        //berechnet, der ist jetzt, wo er der erste wird obsolet bzw. anders.
+        //The old follower may calculated a gap to the predecessor which now
+        //becomes obsolete or different respectively as it becomes the first
+        //one itself.
         pFrm->_InvalidatePrt();
         pFrm->_InvalidatePos();
         pFrm->InvalidatePage( pPage );
@@ -965,16 +962,16 @@ void SwCntntFrm::Cut()
     else
     {
         InvalidateNextPos();
-        //Einer muss die Retusche uebernehmen: Vorgaenger oder Upper
+        //Someone needs to do the retouching: predecessor or upper
         if ( 0 != (pFrm = GetPrev()) )
         {   pFrm->SetRetouche();
             pFrm->Prepare( PREP_WIDOWS_ORPHANS );
             pFrm->_InvalidatePos();
             pFrm->InvalidatePage( pPage );
         }
-        //Wenn ich der einzige CntntFrm in meinem Upper bin (war), so muss
-        //er die Retouche uebernehmen.
         //Ausserdem kann eine Leerseite entstanden sein.
+        //If I'm (was) the only CntntFrm in my upper, he has to do the
+        //retouching.
         else
         {   SwRootFrm *pRoot = getRootFrm();
             if ( pRoot )
@@ -1006,7 +1003,7 @@ void SwCntntFrm::Cut()
             }
         }
     }
-    //Erst removen, dann Upper Shrinken.
+    //Remove first, then shrink the upper.
     SwLayoutFrm *pUp = GetUpper();
     Remove();
     if ( pUp )
@@ -1047,9 +1044,9 @@ void SwCntntFrm::Cut()
                          ( pUp->IsFtnFrm() && pUp->IsColLocked() ) )
                     {
                         pSct->DelEmpty( sal_False );
-                        // Wenn ein gelockter Bereich nicht geloescht werden darf,
-                        // so ist zumindest seine Groesse durch das Entfernen seines
-                        // letzten Contents ungueltig geworden.
+                        // If a loosened area may not be deleted then at least
+                        // its size became invalid after removing its last
+                        // content.
                         pSct->_InvalidateSize();
                     }
                     else
@@ -1077,8 +1074,8 @@ void SwCntntFrm::Cut()
 |*************************************************************************/
 void SwLayoutFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Paste." );
-    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent ist CntntFrm." );
+    OSL_ENSURE( pParent, "No parent for pasting." );
+    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent is CntntFrm." );
     OSL_ENSURE( pParent != this, "Bin selbst der Parent." );
     OSL_ENSURE( pSibling != this, "Bin mein eigener Nachbar." );
     OSL_ENSURE( !GetPrev() && !GetNext() && !GetUpper(),
commit 9b6dab22f9cec6690c400ea302473cbb0119a701
Author: Nicolas Christener <nicolas.christener at adfinis-sygroup.ch>
Date:   Mon Feb 13 11:38:09 2012 +0100

    translate german comments

diff --git a/sw/source/core/layout/virtoutp.hxx b/sw/source/core/layout/virtoutp.hxx
index f6ecb88..61e712f 100644
--- a/sw/source/core/layout/virtoutp.hxx
+++ b/sw/source/core/layout/virtoutp.hxx
@@ -42,7 +42,7 @@ class ViewShell;
 
 class SwLayVout
 {
-    friend void _FrmFinit();    //loescht das Vout
+    friend void _FrmFinit();    //deletes Vout
 private:
     ViewShell*      pSh;
     OutputDevice*   pOut;
commit 267e077b979b6f81175ed2d0b7a1ba9e04483549
Author: Nicolas Christener <nicolas.christener at adfinis-sygroup.ch>
Date:   Mon Feb 13 11:38:02 2012 +0100

    translate german comments

diff --git a/sw/source/core/layout/virtoutp.cxx b/sw/source/core/layout/virtoutp.cxx
index b4acf6c..831b9e0 100644
--- a/sw/source/core/layout/virtoutp.cxx
+++ b/sw/source/core/layout/virtoutp.cxx
@@ -68,9 +68,9 @@ inline DbgRect::DbgRect( OutputDevice *pOutDev, const Rectangle &rRect,
 
 #endif
 
-/* class SwLayVout verwaltet das virtuelle Outputdevice
- * Es gibt von dieser Klasse einen statischen Member am RootFrm,
- * dieser wird in _FrmInit angelegt und in _FrmFinit zerstoert.
+/* The SWLayVout class manages the virtual output devices.
+ * RootFrm has a static member of this class which is created in _FrmInit
+ * and destroyed in _FrmFinit.
  * */
 
 sal_Bool SwRootFrm::FlushVout()
@@ -136,7 +136,7 @@ void SetMappingForVirtDev(  const Point&    _rNewOrigin,
  *                          SwVOut::DoesFit()
  *************************************************************************/
 
-// rSize muss in Pixel-Koordinaten vorliegen!
+// rSize must be pixel coordinates!
 sal_Bool SwLayVout::DoesFit( const Size &rNew )
 {
     if( rNew.Height() > VIRTUALHEIGHT )
@@ -197,7 +197,7 @@ void SwLayVout::Enter(  ViewShell *pShell, SwRect &rRect, sal_Bool bOn )
         pSh = pShell;
         pOut = NULL;
         OutputDevice *pO = pSh->GetOut();
-// Auf dem Drucker oder einem virt. Outputdevice wird nicht getrickst...
+// We don't cheat on printers or virtual output devices...
         if( OUTDEV_WINDOW != pO->GetOutDevType() )
             return;
 
@@ -211,7 +211,7 @@ void SwLayVout::Enter(  ViewShell *pShell, SwRect &rRect, sal_Bool bOn )
         OSL_ENSURE( !pSh->GetWin()->IsReallyVisible() ||
                 aTmpRect.GetWidth() <= pSh->GetWin()->GetOutputSizePixel().Width() + 2,
                 "Paintwidth bigger than visarea?" );
-        // Passt das Rechteck in unseren Buffer ?
+        // Does the rectangle fit in our buffer?
         if( !DoesFit( aTmpRect.GetSize() ) )
         {
             pOut = NULL;
commit c1beabb18abba10d8ea8454b1baea61292e75b15
Author: Nicolas Christener <nicolas.christener at adfinis-sygroup.ch>
Date:   Mon Feb 13 11:37:54 2012 +0100

    translate german comments

diff --git a/sw/source/core/layout/unusedf.cxx b/sw/source/core/layout/unusedf.cxx
index f68f2b7..d28eb5f 100644
--- a/sw/source/core/layout/unusedf.cxx
+++ b/sw/source/core/layout/unusedf.cxx
@@ -34,17 +34,17 @@
 
 void SwFrm::Format( const SwBorderAttrs * )
 {
-    OSL_FAIL( "Format() der Basisklasse gerufen." );
+    OSL_FAIL( "Format() of the base class called." );
 }
 
 void SwFrm::Paint(SwRect const&, SwPrintData const*const) const
 {
-    OSL_FAIL( "Paint() der Basisklasse gerufen." );
+    OSL_FAIL( "Paint() of the base class called." );
 }
 
 sal_Bool SwCntntFrm::WouldFit( SwTwips &, sal_Bool&, sal_Bool )
 {
-    OSL_FAIL( "WouldFit des CntntFrm gerufen." );
+    OSL_FAIL( "WouldFit of CntntFrm called." );

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list