[Libreoffice-commits] .: sw/source

Michael Stahl mst at kemper.freedesktop.org
Tue Jun 5 04:03:40 PDT 2012


 sw/source/core/layout/frmtool.cxx |   43 +++++++++++++++++++++++---------------
 1 file changed, 27 insertions(+), 16 deletions(-)

New commits:
commit 960d72c0d721b08dcf331c8caf51ea4a99b501ef
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Jun 5 12:59:30 2012 +0200

    Revert "fdo#39006: Fixed layout loop"
    
    This reverts commit 2a22e664811e10ca58ec66ba8fd10b1a6185c178.
    
    i don't have an opinion whether this commit is wrong or right,
    but nobody has time to investigate the layout changes that it causes,
    so since it's not a regression itself it's safest to revert it.

diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx
index d1ff0b3..4cf9a6c 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -724,22 +724,33 @@ SwFlyNotify::~SwFlyNotify()
          ( !pFly->ISA(SwFlyFreeFrm) ||
            !static_cast<SwFlyFreeFrm*>(pFly)->IsNoMoveOnCheckClip() ) )
     {
-        // lock position
-        pFly->LockPosition();
-
-        if ( !pFly->ConsiderForTextWrap() )
-        {
-            // indicate that object has to be considered for text wrap
-            pFly->SetConsiderForTextWrap( true );
-            // invalidate 'background' in order to allow its 'background'
-            // to wrap around it.
-            pFly->NotifyBackground( pFly->GetPageFrm(),
-                                    pFly->GetObjRectWithSpaces(),
-                                    PREP_FLY_ARRIVE );
-            // invalidate position of anchor frame in order to force
-            // a re-format of the anchor frame, which also causes a
-            // re-format of the invalid previous frames of the anchor frame.
-            pFly->AnchorFrm()->InvalidatePos();
+        // #i54138# - suppress restart of the layout process
+        // on changed frame height.
+        // Note: It doesn't seem to be necessary and can cause layout loops.
+        if ( bPosChgd )
+        {
+            // indicate a restart of the layout process
+            pFly->SetRestartLayoutProcess( true );
+        }
+        else
+        {
+            // lock position
+            pFly->LockPosition();
+
+            if ( !pFly->ConsiderForTextWrap() )
+            {
+                // indicate that object has to be considered for text wrap
+                pFly->SetConsiderForTextWrap( true );
+                // invalidate 'background' in order to allow its 'background'
+                // to wrap around it.
+                pFly->NotifyBackground( pFly->GetPageFrm(),
+                                        pFly->GetObjRectWithSpaces(),
+                                        PREP_FLY_ARRIVE );
+                // invalidate position of anchor frame in order to force
+                // a re-format of the anchor frame, which also causes a
+                // re-format of the invalid previous frames of the anchor frame.
+                pFly->AnchorFrm()->InvalidatePos();
+            }
         }
     }
 }


More information about the Libreoffice-commits mailing list