Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Unified Diff: content/renderer/gpu/input_handler_proxy.cc

Issue 25629006: Suppress scrolls that begin on fixed-pos layers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/gpu/input_handler_proxy.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/gpu/input_handler_proxy.cc
diff --git a/content/renderer/gpu/input_handler_proxy.cc b/content/renderer/gpu/input_handler_proxy.cc
index 77dd0f0af8472559f704120c5ad6618f4c2ec418..e81ebf0227d6d60a6fe218ce9676afc0ac0f9663 100644
--- a/content/renderer/gpu/input_handler_proxy.cc
+++ b/content/renderer/gpu/input_handler_proxy.cc
@@ -60,6 +60,7 @@ InputHandlerProxy::InputHandlerProxy(cc::InputHandler* input_handler)
expect_pinch_update_end_(false),
#endif
gesture_scroll_on_impl_thread_(false),
+ gesture_scroll_on_main_thread_(false),
gesture_pinch_on_impl_thread_(false),
fling_may_be_active_on_main_thread_(false),
fling_overscrolled_horizontally_(false),
@@ -150,6 +151,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent(
gesture_scroll_on_impl_thread_ = true;
return DID_HANDLE;
case cc::InputHandler::ScrollOnMainThread:
+ gesture_scroll_on_main_thread_ = true;
return DID_NOT_HANDLE;
case cc::InputHandler::ScrollIgnored:
return DROP_EVENT;
@@ -159,9 +161,12 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent(
DCHECK(expect_scroll_update_end_);
#endif
- if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_)
+ if (gesture_scroll_on_main_thread_)
return DID_NOT_HANDLE;
+ if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_)
+ return DROP_EVENT;
+
const WebGestureEvent& gesture_event =
*static_cast<const WebGestureEvent*>(&event);
bool did_scroll = input_handler_->ScrollBy(
@@ -176,8 +181,13 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent(
#endif
input_handler_->ScrollEnd();
- if (!gesture_scroll_on_impl_thread_)
+ if (gesture_scroll_on_main_thread_) {
+ gesture_scroll_on_main_thread_ = false;
return DID_NOT_HANDLE;
+ }
+
+ if (!gesture_scroll_on_impl_thread_)
+ return DROP_EVENT;
gesture_scroll_on_impl_thread_ = false;
return DID_HANDLE;
@@ -244,7 +254,7 @@ InputHandlerProxy::HandleGestureFling(
gfx::Point(gesture_event.x, gesture_event.y),
cc::InputHandler::NonBubblingGesture);
} else {
- if (!gesture_scroll_on_impl_thread_)
+ if (gesture_scroll_on_main_thread_)
scroll_status = cc::InputHandler::ScrollOnMainThread;
else
scroll_status = input_handler_->FlingScrollBegin();
« no previous file with comments | « content/renderer/gpu/input_handler_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698