Chromium Code Reviews| Index: content/renderer/render_widget.cc |
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
| index de16016217bd6bb6eb96a4e6aa2b4e6bbc4226a9..d0a6ca3df3f0ba043ec98ea153ae6b26af675688 100644 |
| --- a/content/renderer/render_widget.cc |
| +++ b/content/renderer/render_widget.cc |
| @@ -1208,7 +1208,10 @@ void RenderWidget::OnHandleInputEvent(const blink::WebInputEvent* input_event, |
| // that they can be used to produce the elastic overscroll effect on Mac. |
| if (input_event->type == WebInputEvent::MouseWheel) { |
| ObserveWheelEventAndResult( |
| - static_cast<const WebMouseWheelEvent&>(*input_event), processed); |
| + static_cast<const WebMouseWheelEvent&>(*input_event), |
| + event_overscroll ? event_overscroll->latest_overscroll_delta |
| + : gfx::Vector2dF(), |
| + processed); |
| } |
| bool frame_pending = compositor_ && compositor_->BeginMainFrameRequested(); |
| @@ -2308,23 +2311,15 @@ bool RenderWidget::WillHandleGestureEvent( |
| void RenderWidget::ObserveWheelEventAndResult( |
| const blink::WebMouseWheelEvent& wheel_event, |
| + const gfx::Vector2dF& wheel_unused_delta, |
| bool event_processed) { |
| if (!compositor_deps_->IsElasticOverscrollEnabled()) |
| return; |
| - // Blink does not accurately compute scroll bubbling or overscroll. For now, |
| - // assume that an unprocessed event was entirely an overscroll, and that a |
| - // processed event was entirely scroll. |
| - // TODO(ccameron): Retrieve an accurate scroll result from Blink. |
| - // http://crbug.com/442859 |
| cc::InputHandlerScrollResult scroll_result; |
| - if (event_processed) { |
| - scroll_result.did_scroll = true; |
| - } else { |
| - scroll_result.did_overscroll_root = true; |
| - scroll_result.unused_scroll_delta = |
| - gfx::Vector2dF(-wheel_event.deltaX, -wheel_event.deltaY); |
| - } |
| + scroll_result.did_scroll = event_processed; |
| + scroll_result.did_overscroll_root = !wheel_unused_delta.IsZero(); |
|
jdduke (slow)
2015/07/07 15:06:17
Can you make sure we're not getting small residual
MuVen
2015/07/07 15:36:45
Done.
|
| + scroll_result.unused_scroll_delta = wheel_unused_delta; |
| RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
| InputHandlerManager* input_handler_manager = |