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

Side by Side 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: Not scale paginated mouse scroll with the display scale factor at the beginning. 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 unified diff | Download patch
OLDNEW
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 // MSVC++ requires this to be set before any other includes to get M_PI. 5 // MSVC++ requires this to be set before any other includes to get M_PI.
6 #define _USE_MATH_DEFINES 6 #define _USE_MATH_DEFINES
7 7
8 #include "ui/events/blink/blink_event_util.h" 8 #include "ui/events/blink/blink_event_util.h"
9 9
10 #include <stddef.h> 10 #include <stddef.h>
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 if (scale == 1.f && delta.IsZero()) 743 if (scale == 1.f && delta.IsZero())
744 return scaled_event; 744 return scaled_event;
745 if (event.type() == blink::WebMouseEvent::MouseWheel) { 745 if (event.type() == blink::WebMouseEvent::MouseWheel) {
746 blink::WebMouseWheelEvent* wheel_event = new blink::WebMouseWheelEvent; 746 blink::WebMouseWheelEvent* wheel_event = new blink::WebMouseWheelEvent;
747 scaled_event.reset(wheel_event); 747 scaled_event.reset(wheel_event);
748 *wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event); 748 *wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event);
749 wheel_event->x += delta.x(); 749 wheel_event->x += delta.x();
750 wheel_event->y += delta.y(); 750 wheel_event->y += delta.y();
751 wheel_event->x *= scale; 751 wheel_event->x *= scale;
752 wheel_event->y *= scale; 752 wheel_event->y *= scale;
753 wheel_event->deltaX *= scale; 753 if (!wheel_event->scrollByPage) {
754 wheel_event->deltaY *= scale; 754 wheel_event->deltaX *= scale;
755 wheel_event->deltaY *= scale;
756 }
755 wheel_event->wheelTicksX *= scale; 757 wheel_event->wheelTicksX *= scale;
aelias_OOO_until_Jul13 2017/02/16 22:11:13 I think wheel tick count should be within the if b
chengx 2017/02/17 08:26:02 Done.
756 wheel_event->wheelTicksY *= scale; 758 wheel_event->wheelTicksY *= scale;
757 } else if (blink::WebInputEvent::isMouseEventType(event.type())) { 759 } else if (blink::WebInputEvent::isMouseEventType(event.type())) {
758 blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent; 760 blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent;
759 scaled_event.reset(mouse_event); 761 scaled_event.reset(mouse_event);
760 *mouse_event = static_cast<const blink::WebMouseEvent&>(event); 762 *mouse_event = static_cast<const blink::WebMouseEvent&>(event);
761 mouse_event->x += delta.x(); 763 mouse_event->x += delta.x();
762 mouse_event->y += delta.y(); 764 mouse_event->y += delta.y();
763 mouse_event->x *= scale; 765 mouse_event->x *= scale;
764 mouse_event->y *= scale; 766 mouse_event->y *= scale;
765 mouse_event->windowX = mouse_event->x; 767 mouse_event->windowX = mouse_event->x;
(...skipping 15 matching lines...) Expand all
781 } else if (blink::WebInputEvent::isGestureEventType(event.type())) { 783 } else if (blink::WebInputEvent::isGestureEventType(event.type())) {
782 blink::WebGestureEvent* gesture_event = new blink::WebGestureEvent; 784 blink::WebGestureEvent* gesture_event = new blink::WebGestureEvent;
783 scaled_event.reset(gesture_event); 785 scaled_event.reset(gesture_event);
784 *gesture_event = static_cast<const blink::WebGestureEvent&>(event); 786 *gesture_event = static_cast<const blink::WebGestureEvent&>(event);
785 gesture_event->x += delta.x(); 787 gesture_event->x += delta.x();
786 gesture_event->y += delta.y(); 788 gesture_event->y += delta.y();
787 gesture_event->x *= scale; 789 gesture_event->x *= scale;
788 gesture_event->y *= scale; 790 gesture_event->y *= scale;
789 switch (gesture_event->type()) { 791 switch (gesture_event->type()) {
790 case blink::WebInputEvent::GestureScrollUpdate: 792 case blink::WebInputEvent::GestureScrollUpdate:
791 gesture_event->data.scrollUpdate.deltaX *= scale; 793 if (gesture_event->data.scrollUpdate.deltaUnits !=
792 gesture_event->data.scrollUpdate.deltaY *= scale; 794 blink::WebGestureEvent::ScrollUnits::Page) {
795 gesture_event->data.scrollUpdate.deltaX *= scale;
796 gesture_event->data.scrollUpdate.deltaY *= scale;
797 }
793 break; 798 break;
794 case blink::WebInputEvent::GestureScrollBegin: 799 case blink::WebInputEvent::GestureScrollBegin:
795 gesture_event->data.scrollBegin.deltaXHint *= scale; 800 if (gesture_event->data.scrollBegin.deltaHintUnits !=
796 gesture_event->data.scrollBegin.deltaYHint *= scale; 801 blink::WebGestureEvent::ScrollUnits::Page) {
802 gesture_event->data.scrollBegin.deltaXHint *= scale;
803 gesture_event->data.scrollBegin.deltaYHint *= scale;
804 }
797 break; 805 break;
798 806
799 case blink::WebInputEvent::GesturePinchUpdate: 807 case blink::WebInputEvent::GesturePinchUpdate:
800 // Scale in pinch gesture is DSF agnostic. 808 // Scale in pinch gesture is DSF agnostic.
801 break; 809 break;
802 810
803 case blink::WebInputEvent::GestureDoubleTap: 811 case blink::WebInputEvent::GestureDoubleTap:
804 case blink::WebInputEvent::GestureTap: 812 case blink::WebInputEvent::GestureTap:
805 case blink::WebInputEvent::GestureTapUnconfirmed: 813 case blink::WebInputEvent::GestureTapUnconfirmed:
806 gesture_event->data.tap.width *= scale; 814 gesture_event->data.tap.width *= scale;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 switch (type) { 972 switch (type) {
965 case blink::WebGestureEvent::GestureScrollUpdate: 973 case blink::WebGestureEvent::GestureScrollUpdate:
966 case blink::WebGestureEvent::GesturePinchUpdate: 974 case blink::WebGestureEvent::GesturePinchUpdate:
967 return true; 975 return true;
968 default: 976 default:
969 return false; 977 return false;
970 } 978 }
971 } 979 }
972 980
973 } // namespace ui 981 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698