Find in page overlay and bouncy are not always positioned correctly
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Mar 2012 21:43:55 +0000 (21:43 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Mar 2012 21:43:55 +0000 (21:43 +0000)
https://bugs.webkit.org/show_bug.cgi?id=82247
<rdar://problem/10866139>

Reviewed by Sam Weinig.

In WebCore, a lot of code depends on scroll position updates to happen synchronously, so
update the frame view scroll position before asking the scrolling thread to scroll.

* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::requestScrollPositionUpdate):

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

Source/WebCore/ChangeLog
Source/WebCore/page/scrolling/ScrollingCoordinator.cpp

index bf53794..68ecf10 100644 (file)
@@ -1,3 +1,17 @@
+2012-03-26  Anders Carlsson  <andersca@apple.com>
+
+        Find in page overlay and bouncy are not always positioned correctly
+        https://bugs.webkit.org/show_bug.cgi?id=82247
+        <rdar://problem/10866139>
+
+        Reviewed by Sam Weinig.
+
+        In WebCore, a lot of code depends on scroll position updates to happen synchronously, so
+        update the frame view scroll position before asking the scrolling thread to scroll.
+
+        * page/scrolling/ScrollingCoordinator.cpp:
+        (WebCore::ScrollingCoordinator::requestScrollPositionUpdate):
+
 2012-03-26  Nate Chapin  <japhet@chromium.org>
 
         Simplify setting loading state in DocumentLoader
index 7ffc32f..93e1da4 100644 (file)
@@ -228,6 +228,10 @@ bool ScrollingCoordinator::requestScrollPositionUpdate(FrameView* frameView, con
         return false;
 
 #if ENABLE(THREADED_SCROLLING)
+    // Update the main frame scroll position locally before asking the scrolling thread to scroll,
+    // since FrameView expects scroll position updates to happen synchronously.
+    updateMainFrameScrollPosition(scrollPosition);
+
     ScrollingThread::dispatch(bind(&ScrollingTree::setMainFrameScrollPosition, m_scrollingTree.get(), scrollPosition));
     return true;
 #else