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

Unified Diff: ui/events/blink/blink_event_util.cc

Issue 2605193002: Fix mouse wheel over-scrolls when display is scaled and scroll is paginated (Closed)
Patch Set: More unittests. Created 3 years, 10 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 | « no previous file | ui/events/blink/blink_event_util_unittest.cc » ('j') | ui/events/gesture_event_details.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/blink/blink_event_util.cc
diff --git a/ui/events/blink/blink_event_util.cc b/ui/events/blink/blink_event_util.cc
index 6378ce21ff9968ecc7e1652a547c9d451f982fbf..ac5a14aa438e64447b6d164dd6e5e71aa0ce581e 100644
--- a/ui/events/blink/blink_event_util.cc
+++ b/ui/events/blink/blink_event_util.cc
@@ -670,11 +670,17 @@ WebGestureEvent CreateWebGestureEvent(const GestureEventDetails& details,
gesture.data.scrollBegin.pointerCount = details.touch_points();
gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint();
gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint();
+ gesture.data.scrollBegin.deltaHintUnits =
+ static_cast<blink::WebGestureEvent::ScrollUnits>(
+ details.scroll_begin_units());
break;
case ET_GESTURE_SCROLL_UPDATE:
gesture.setType(WebInputEvent::GestureScrollUpdate);
gesture.data.scrollUpdate.deltaX = details.scroll_x();
gesture.data.scrollUpdate.deltaY = details.scroll_y();
+ gesture.data.scrollUpdate.deltaUnits =
+ static_cast<blink::WebGestureEvent::ScrollUnits>(
+ details.scroll_update_units());
gesture.data.scrollUpdate.previousUpdateInSequencePrevented =
details.previous_scroll_update_in_sequence_prevented();
break;
@@ -750,10 +756,12 @@ std::unique_ptr<blink::WebInputEvent> TranslateAndScaleWebInputEvent(
wheel_event->y += delta.y();
wheel_event->x *= scale;
wheel_event->y *= scale;
- wheel_event->deltaX *= scale;
- wheel_event->deltaY *= scale;
- wheel_event->wheelTicksX *= scale;
- wheel_event->wheelTicksY *= scale;
+ if (!wheel_event->scrollByPage) {
+ wheel_event->deltaX *= scale;
+ wheel_event->deltaY *= scale;
+ wheel_event->wheelTicksX *= scale;
+ wheel_event->wheelTicksY *= scale;
+ }
} else if (blink::WebInputEvent::isMouseEventType(event.type())) {
blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent;
scaled_event.reset(mouse_event);
@@ -788,12 +796,18 @@ std::unique_ptr<blink::WebInputEvent> TranslateAndScaleWebInputEvent(
gesture_event->y *= scale;
switch (gesture_event->type()) {
case blink::WebInputEvent::GestureScrollUpdate:
- gesture_event->data.scrollUpdate.deltaX *= scale;
- gesture_event->data.scrollUpdate.deltaY *= scale;
+ if (gesture_event->data.scrollUpdate.deltaUnits !=
+ blink::WebGestureEvent::ScrollUnits::Page) {
+ gesture_event->data.scrollUpdate.deltaX *= scale;
+ gesture_event->data.scrollUpdate.deltaY *= scale;
+ }
break;
case blink::WebInputEvent::GestureScrollBegin:
- gesture_event->data.scrollBegin.deltaXHint *= scale;
- gesture_event->data.scrollBegin.deltaYHint *= scale;
+ if (gesture_event->data.scrollBegin.deltaHintUnits !=
+ blink::WebGestureEvent::ScrollUnits::Page) {
+ gesture_event->data.scrollBegin.deltaXHint *= scale;
+ gesture_event->data.scrollBegin.deltaYHint *= scale;
+ }
break;
case blink::WebInputEvent::GesturePinchUpdate:
« no previous file with comments | « no previous file | ui/events/blink/blink_event_util_unittest.cc » ('j') | ui/events/gesture_event_details.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698