2007-04-19 Mitz Pettel <mitz@webkit.org>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Apr 2007 02:09:35 +0000 (02:09 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Apr 2007 02:09:35 +0000 (02:09 +0000)
        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=13403
          REGRESSION (r18875-r18899): Can no longer type into search form field after searching and then clicking "back"

        The problem was that the page was loaded from the page cache with a subtree
        marked for layout and the layout timer stopped (having been stopped when the
        page entered the page cache). FrameView::needsLayout() was returning false
        which prevented the pending layout from completing.

        * page/FrameView.cpp:
        (WebCore::FrameView::clear): Removed the call to stop the layout timer, since
        reset() does that already.
        (WebCore::FrameView::needsLayout): Changed to return true if there's a subtree
        pending relayout.

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

WebCore/ChangeLog
WebCore/page/FrameView.cpp

index 1b048630501d034d1ded1badde92355a00dd359a..0e3bd9321bf916bc996a5c04fd20bab91d341720 100644 (file)
@@ -1,3 +1,21 @@
+2007-04-19  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Darin.
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=13403
+          REGRESSION (r18875-r18899): Can no longer type into search form field after searching and then clicking "back"
+
+        The problem was that the page was loaded from the page cache with a subtree
+        marked for layout and the layout timer stopped (having been stopped when the
+        page entered the page cache). FrameView::needsLayout() was returning false
+        which prevented the pending layout from completing.
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::clear): Removed the call to stop the layout timer, since
+        reset() does that already.
+        (WebCore::FrameView::needsLayout): Changed to return true if there's a subtree
+        pending relayout.
+
 2007-04-19  Justin Garcia  <justin.garcia@apple.com>
 
         Reviewed by harrison
index 3d1f4f024f218323071f7cf988b91533b3f69aff..44930a86cd05617ab6f3cffd773a97a249b7808a 100644 (file)
@@ -177,12 +177,6 @@ void FrameView::clear()
     
     d->reset();
 
-#ifdef INSTRUMENT_LAYOUT_SCHEDULING
-    if (d->layoutTimer.isActive() && m_frame->document() && !m_frame->document()->ownerElement())
-        printf("Killing the layout timer from a clear at %d\n", m_frame->document()->elapsedTime());
-#endif    
-    d->layoutTimer.stop();
-
     if (m_frame)
         if (RenderPart* renderer = m_frame->ownerRenderer())
             renderer->viewCleared();
@@ -702,7 +696,7 @@ bool FrameView::needsLayout() const
     // It is possible that our document will not have a body yet. If this is the case, 
     // then we are not allowed to schedule layouts yet, so we won't be pending layout.
     RenderView* root = static_cast<RenderView*>(m_frame->renderer());
-    return layoutPending() || (root && root->needsLayout());
+    return layoutPending() || (root && root->needsLayout()) || d->layoutRoot;
 }
 
 void FrameView::setNeedsLayout()