Test: fast/block/positioning/relayout-on-position-change.html
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2006 04:42:09 +0000 (04:42 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2006 04:42:09 +0000 (04:42 +0000)
        Reviewed by Hyatt.

        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7095
          Removing positioning from an element does not relayout properly

        * rendering/render_object.cpp:
        (WebCore::RenderObject::setStyle): The second call to setNeedsLayoutAndMinMaxRecalc
        did not mark containing blocks for relayout based on the new position value since
        the object itself was already marked as needing layout. Changed the first call to
        only mark the containing blocks (based on the old position value) and not the
        object itself.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@12681 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/rendering/render_object.cpp

index 1c8a5e97b885d475ca8aa627dfebea73d31cdb10..73d9243496b717795a2314c0c049921ccbb93bb9 100644 (file)
@@ -1,3 +1,19 @@
+2006-02-08  Mitz Pettel  <opendarwin.org@mitzpettel.com>
+
+        Test: fast/block/positioning/relayout-on-position-change.html
+
+        Reviewed by Hyatt.
+
+        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7095
+          Removing positioning from an element does not relayout properly
+
+        * rendering/render_object.cpp:
+        (WebCore::RenderObject::setStyle): The second call to setNeedsLayoutAndMinMaxRecalc
+        did not mark containing blocks for relayout based on the new position value since
+        the object itself was already marked as needing layout. Changed the first call to
+        only mark the containing blocks (based on the old position value) and not the
+        object itself.
+
 2006-02-08  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Eric.
index 3b9bce63122525e79091457755dfb54386ad4ce9..7e48832d0d1800e8e9bad30b625fed081543d34c 100644 (file)
@@ -1791,7 +1791,7 @@ void RenderObject::setStyle(RenderStyle *style)
         // When a layout hint happens and an object's position style changes, we have to do a layout
         // to dirty the render tree using the old position value now.
         if (d == RenderStyle::Layout && m_parent && m_style->position() != style->position())
-            setNeedsLayoutAndMinMaxRecalc();
+            markContainingBlocksForLayout();
         
         if (isFloating() && (m_style->floating() != style->floating()))
             // For changes in float styles, we need to conceivably remove ourselves