Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/render_widget_host_input_event_router.h" | 5 #include "content/browser/renderer_host/render_widget_host_input_event_router.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
| 10 #include "cc/quads/surface_draw_quad.h" | 10 #include "cc/quads/surface_draw_quad.h" |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 278 target = RenderWidgetHostImpl::From(root_view->GetRenderWidgetHost()) | 278 target = RenderWidgetHostImpl::From(root_view->GetRenderWidgetHost()) |
| 279 ->delegate() | 279 ->delegate() |
| 280 ->GetMouseLockWidget() | 280 ->GetMouseLockWidget() |
| 281 ->GetView(); | 281 ->GetView(); |
| 282 if (!root_view->TransformPointToCoordSpaceForView( | 282 if (!root_view->TransformPointToCoordSpaceForView( |
| 283 gfx::Point(event->PositionInWidget().x, | 283 gfx::Point(event->PositionInWidget().x, |
| 284 event->PositionInWidget().y), | 284 event->PositionInWidget().y), |
| 285 target, &transformed_point)) | 285 target, &transformed_point)) |
| 286 return; | 286 return; |
| 287 } else { | 287 } else { |
| 288 target = FindEventTarget( | 288 if (root_view->wheel_scroll_latching_enabled()) { |
| 289 root_view, | 289 if (event->phase == blink::WebMouseWheelEvent::kPhaseBegan) { |
| 290 gfx::Point(event->PositionInWidget().x, event->PositionInWidget().y), | 290 wheel_target_.target = |
| 291 &transformed_point); | 291 FindEventTarget(root_view, |
| 292 gfx::Point(event->PositionInWidget().x, | |
| 293 event->PositionInWidget().y), | |
| 294 &transformed_point); | |
| 295 wheel_target_.delta = | |
| 296 transformed_point - gfx::Point(event->PositionInWidget().x, | |
| 297 event->PositionInWidget().y); | |
| 298 target = wheel_target_.target; | |
| 299 } else { | |
| 300 if (wheel_target_.target) { | |
| 301 target = wheel_target_.target; | |
| 302 transformed_point = gfx::Point(event->PositionInWidget().x, | |
| 303 event->PositionInWidget().y) + | |
| 304 wheel_target_.delta; | |
| 305 } | |
| 306 } | |
| 307 | |
| 308 } else { // !root_view->wheel_scroll_latching_enabled() | |
| 309 target = FindEventTarget( | |
| 310 root_view, | |
| 311 gfx::Point(event->PositionInWidget().x, event->PositionInWidget().y), | |
| 312 &transformed_point); | |
| 313 } | |
| 292 } | 314 } |
| 293 | 315 |
| 294 if (!target) | 316 if (!target) |
| 295 return; | 317 return; |
| 296 | 318 |
| 297 event->SetPositionInWidget(transformed_point.x(), transformed_point.y()); | 319 event->SetPositionInWidget(transformed_point.x(), transformed_point.y()); |
| 298 target->ProcessMouseWheelEvent(*event, latency); | 320 target->ProcessMouseWheelEvent(*event, latency); |
| 321 if (root_view->wheel_scroll_latching_enabled() && | |
| 322 (event->phase == blink::WebMouseWheelEvent::kPhaseEnded || | |
| 323 event->momentum_phase == blink::WebMouseWheelEvent::kPhaseEnded)) { | |
| 324 wheel_target_.target = nullptr; | |
|
tdresser
2017/06/09 18:13:11
This isn't needed, is it?
sahel
2017/06/13 15:43:20
By resetting the target on end events we won't sen
tdresser
2017/06/13 15:48:50
Maybe leave it, and add a DCHECK that the target i
sahel
2017/06/14 19:09:43
We agreed to leave it as it is since sometimes Fin
| |
| 325 } | |
| 299 } | 326 } |
| 300 | 327 |
| 301 void RenderWidgetHostInputEventRouter::RouteGestureEvent( | 328 void RenderWidgetHostInputEventRouter::RouteGestureEvent( |
| 302 RenderWidgetHostViewBase* root_view, | 329 RenderWidgetHostViewBase* root_view, |
| 303 blink::WebGestureEvent* event, | 330 blink::WebGestureEvent* event, |
| 304 const ui::LatencyInfo& latency) { | 331 const ui::LatencyInfo& latency) { |
| 305 if (event->IsTargetViewport()) { | 332 if (event->IsTargetViewport()) { |
| 306 root_view->ProcessGestureEvent(*event, latency); | 333 root_view->ProcessGestureEvent(*event, latency); |
| 307 return; | 334 return; |
| 308 } | 335 } |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 847 std::vector<RenderWidgetHostView*> | 874 std::vector<RenderWidgetHostView*> |
| 848 RenderWidgetHostInputEventRouter::GetRenderWidgetHostViewsForTests() const { | 875 RenderWidgetHostInputEventRouter::GetRenderWidgetHostViewsForTests() const { |
| 849 std::vector<RenderWidgetHostView*> hosts; | 876 std::vector<RenderWidgetHostView*> hosts; |
| 850 for (auto entry : owner_map_) | 877 for (auto entry : owner_map_) |
| 851 hosts.push_back(entry.second); | 878 hosts.push_back(entry.second); |
| 852 | 879 |
| 853 return hosts; | 880 return hosts; |
| 854 } | 881 } |
| 855 | 882 |
| 856 } // namespace content | 883 } // namespace content |
| OLD | NEW |