Reviewed by Maciej.
authorbdakin <bdakin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Jul 2006 02:31:52 +0000 (02:31 +0000)
committerbdakin <bdakin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Jul 2006 02:31:52 +0000 (02:31 +0000)
        Fix for http://bugzilla.opendarwin.org/show_bug.cgi?id=9749 A
        nested content editable div causes unnecessary screen redraws.

        We were repainting too much because we were deciding that we needed
        a full layout because we didn't have a first line box. Our code
        used to hold a lot of assumptions that positioned elements would
        always have line boxes, but I fixed a few bugs a while back that
        appeared because this assumption isn't true. This assumption was
        also causing the extra redraws because the check meant that we
        would decide to do a full layout for any positioned element that
        did not have any line boxes in the first place. Maciej and I talked
        about this, and we couldn't figure out why the check for line boxes
        was part of determining if we need a full layout in the first
        place. After hunting around the code, we decided to assume that
        this check is antiquated. Removing it fixes the bug and doesn't
        seem to break any layout tests. So, fingers crossed!

        Will add layout test so soon.

        * rendering/bidi.cpp:
        (WebCore::RenderBlock::layoutInlineChildren): Remove firstLineBox
        check.

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

WebCore/ChangeLog
WebCore/rendering/bidi.cpp

index 501eed67b3e38600af815162695ca8fb70ab23f7..5ecc64ebe2fda8f4c5b56070b33c40679d9379d8 100644 (file)
@@ -1,3 +1,30 @@
+2006-07-09  Beth Dakin  <bdakin@apple.com>
+
+        Reviewed by Maciej.
+
+        Fix for http://bugzilla.opendarwin.org/show_bug.cgi?id=9749 A 
+        nested content editable div causes unnecessary screen redraws.
+        
+        We were repainting too much because we were deciding that we needed 
+        a full layout because we didn't have a first line box. Our code 
+        used to hold a lot of assumptions that positioned elements would 
+        always have line boxes, but I fixed a few bugs a while back that 
+        appeared because this assumption isn't true. This assumption was 
+        also causing the extra redraws because the check meant that we 
+        would decide to do a full layout for any positioned element that 
+        did not have any line boxes in the first place. Maciej and I talked 
+        about this, and we couldn't figure out why the check for line boxes 
+        was part of determining if we need a full layout in the first 
+        place. After hunting around the code, we decided to assume that 
+        this check is antiquated. Removing it fixes the bug and doesn't 
+        seem to break any layout tests. So, fingers crossed!
+
+        Will add layout test so soon.
+
+        * rendering/bidi.cpp:
+        (WebCore::RenderBlock::layoutInlineChildren): Remove firstLineBox 
+        check.
+
 2006-07-09  David Harrison  <harrison@apple.com>
 
         Reviewed by John Sullivan.
index 4fc1fe3726edad7d27c2daaa75c029996aa458d9..23f2b5f2bec21d0cbe910739e76897ec89207507 100644 (file)
@@ -1491,7 +1491,7 @@ IntRect RenderBlock::layoutInlineChildren(bool relayoutChildren)
     // Figure out if we should clear out our line boxes.
     // FIXME: Handle resize eventually!
     // FIXME: Do something better when floats are present.
-    bool fullLayout = !firstLineBox() || !firstChild() || selfNeedsLayout() || relayoutChildren || containsFloats();
+    bool fullLayout = !firstChild() || selfNeedsLayout() || relayoutChildren || containsFloats();
     if (fullLayout)
         deleteLineBoxes();