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

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: Better function/variable names. 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 652 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 gesture.setType(blink::WebInputEvent::GestureTwoFingerTap); 663 gesture.setType(blink::WebInputEvent::GestureTwoFingerTap);
664 gesture.data.twoFingerTap.firstFingerWidth = details.first_finger_width(); 664 gesture.data.twoFingerTap.firstFingerWidth = details.first_finger_width();
665 gesture.data.twoFingerTap.firstFingerHeight = 665 gesture.data.twoFingerTap.firstFingerHeight =
666 details.first_finger_height(); 666 details.first_finger_height();
667 break; 667 break;
668 case ET_GESTURE_SCROLL_BEGIN: 668 case ET_GESTURE_SCROLL_BEGIN:
669 gesture.setType(WebInputEvent::GestureScrollBegin); 669 gesture.setType(WebInputEvent::GestureScrollBegin);
670 gesture.data.scrollBegin.pointerCount = details.touch_points(); 670 gesture.data.scrollBegin.pointerCount = details.touch_points();
671 gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint(); 671 gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint();
672 gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint(); 672 gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint();
673 gesture.data.scrollBegin.deltaHintUnits =
674 static_cast<blink::WebGestureEvent::ScrollUnits>(
675 details.scroll_begin_units());
673 break; 676 break;
674 case ET_GESTURE_SCROLL_UPDATE: 677 case ET_GESTURE_SCROLL_UPDATE:
675 gesture.setType(WebInputEvent::GestureScrollUpdate); 678 gesture.setType(WebInputEvent::GestureScrollUpdate);
676 gesture.data.scrollUpdate.deltaX = details.scroll_x(); 679 gesture.data.scrollUpdate.deltaX = details.scroll_x();
677 gesture.data.scrollUpdate.deltaY = details.scroll_y(); 680 gesture.data.scrollUpdate.deltaY = details.scroll_y();
681 gesture.data.scrollUpdate.deltaUnits =
682 static_cast<blink::WebGestureEvent::ScrollUnits>(
683 details.scroll_update_units());
678 gesture.data.scrollUpdate.previousUpdateInSequencePrevented = 684 gesture.data.scrollUpdate.previousUpdateInSequencePrevented =
679 details.previous_scroll_update_in_sequence_prevented(); 685 details.previous_scroll_update_in_sequence_prevented();
680 break; 686 break;
681 case ET_GESTURE_SCROLL_END: 687 case ET_GESTURE_SCROLL_END:
682 gesture.setType(WebInputEvent::GestureScrollEnd); 688 gesture.setType(WebInputEvent::GestureScrollEnd);
683 break; 689 break;
684 case ET_SCROLL_FLING_START: 690 case ET_SCROLL_FLING_START:
685 gesture.setType(WebInputEvent::GestureFlingStart); 691 gesture.setType(WebInputEvent::GestureFlingStart);
686 gesture.data.flingStart.velocityX = details.velocity_x(); 692 gesture.data.flingStart.velocityX = details.velocity_x();
687 gesture.data.flingStart.velocityY = details.velocity_y(); 693 gesture.data.flingStart.velocityY = details.velocity_y();
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 if (scale == 1.f && delta.IsZero()) 749 if (scale == 1.f && delta.IsZero())
744 return scaled_event; 750 return scaled_event;
745 if (event.type() == blink::WebMouseEvent::MouseWheel) { 751 if (event.type() == blink::WebMouseEvent::MouseWheel) {
746 blink::WebMouseWheelEvent* wheel_event = new blink::WebMouseWheelEvent; 752 blink::WebMouseWheelEvent* wheel_event = new blink::WebMouseWheelEvent;
747 scaled_event.reset(wheel_event); 753 scaled_event.reset(wheel_event);
748 *wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event); 754 *wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event);
749 wheel_event->x += delta.x(); 755 wheel_event->x += delta.x();
750 wheel_event->y += delta.y(); 756 wheel_event->y += delta.y();
751 wheel_event->x *= scale; 757 wheel_event->x *= scale;
752 wheel_event->y *= scale; 758 wheel_event->y *= scale;
753 wheel_event->deltaX *= scale; 759 if (!wheel_event->scrollByPage) {
Bret 2017/02/17 21:06:03 Test for this too?
chengx 2017/02/17 21:57:44 Yep, added.
754 wheel_event->deltaY *= scale; 760 wheel_event->deltaX *= scale;
755 wheel_event->wheelTicksX *= scale; 761 wheel_event->deltaY *= scale;
756 wheel_event->wheelTicksY *= scale; 762 wheel_event->wheelTicksX *= scale;
763 wheel_event->wheelTicksY *= scale;
764 }
757 } else if (blink::WebInputEvent::isMouseEventType(event.type())) { 765 } else if (blink::WebInputEvent::isMouseEventType(event.type())) {
758 blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent; 766 blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent;
759 scaled_event.reset(mouse_event); 767 scaled_event.reset(mouse_event);
760 *mouse_event = static_cast<const blink::WebMouseEvent&>(event); 768 *mouse_event = static_cast<const blink::WebMouseEvent&>(event);
761 mouse_event->x += delta.x(); 769 mouse_event->x += delta.x();
762 mouse_event->y += delta.y(); 770 mouse_event->y += delta.y();
763 mouse_event->x *= scale; 771 mouse_event->x *= scale;
764 mouse_event->y *= scale; 772 mouse_event->y *= scale;
765 mouse_event->windowX = mouse_event->x; 773 mouse_event->windowX = mouse_event->x;
766 mouse_event->windowY = mouse_event->y; 774 mouse_event->windowY = mouse_event->y;
(...skipping 14 matching lines...) Expand all
781 } else if (blink::WebInputEvent::isGestureEventType(event.type())) { 789 } else if (blink::WebInputEvent::isGestureEventType(event.type())) {
782 blink::WebGestureEvent* gesture_event = new blink::WebGestureEvent; 790 blink::WebGestureEvent* gesture_event = new blink::WebGestureEvent;
783 scaled_event.reset(gesture_event); 791 scaled_event.reset(gesture_event);
784 *gesture_event = static_cast<const blink::WebGestureEvent&>(event); 792 *gesture_event = static_cast<const blink::WebGestureEvent&>(event);
785 gesture_event->x += delta.x(); 793 gesture_event->x += delta.x();
786 gesture_event->y += delta.y(); 794 gesture_event->y += delta.y();
787 gesture_event->x *= scale; 795 gesture_event->x *= scale;
788 gesture_event->y *= scale; 796 gesture_event->y *= scale;
789 switch (gesture_event->type()) { 797 switch (gesture_event->type()) {
790 case blink::WebInputEvent::GestureScrollUpdate: 798 case blink::WebInputEvent::GestureScrollUpdate:
791 gesture_event->data.scrollUpdate.deltaX *= scale; 799 if (gesture_event->data.scrollUpdate.deltaUnits !=
792 gesture_event->data.scrollUpdate.deltaY *= scale; 800 blink::WebGestureEvent::ScrollUnits::Page) {
801 gesture_event->data.scrollUpdate.deltaX *= scale;
802 gesture_event->data.scrollUpdate.deltaY *= scale;
803 }
793 break; 804 break;
794 case blink::WebInputEvent::GestureScrollBegin: 805 case blink::WebInputEvent::GestureScrollBegin:
795 gesture_event->data.scrollBegin.deltaXHint *= scale; 806 if (gesture_event->data.scrollBegin.deltaHintUnits !=
796 gesture_event->data.scrollBegin.deltaYHint *= scale; 807 blink::WebGestureEvent::ScrollUnits::Page) {
808 gesture_event->data.scrollBegin.deltaXHint *= scale;
809 gesture_event->data.scrollBegin.deltaYHint *= scale;
810 }
797 break; 811 break;
798 812
799 case blink::WebInputEvent::GesturePinchUpdate: 813 case blink::WebInputEvent::GesturePinchUpdate:
800 // Scale in pinch gesture is DSF agnostic. 814 // Scale in pinch gesture is DSF agnostic.
801 break; 815 break;
802 816
803 case blink::WebInputEvent::GestureDoubleTap: 817 case blink::WebInputEvent::GestureDoubleTap:
804 case blink::WebInputEvent::GestureTap: 818 case blink::WebInputEvent::GestureTap:
805 case blink::WebInputEvent::GestureTapUnconfirmed: 819 case blink::WebInputEvent::GestureTapUnconfirmed:
806 gesture_event->data.tap.width *= scale; 820 gesture_event->data.tap.width *= scale;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 switch (type) { 978 switch (type) {
965 case blink::WebGestureEvent::GestureScrollUpdate: 979 case blink::WebGestureEvent::GestureScrollUpdate:
966 case blink::WebGestureEvent::GesturePinchUpdate: 980 case blink::WebGestureEvent::GesturePinchUpdate:
967 return true; 981 return true;
968 default: 982 default:
969 return false; 983 return false;
970 } 984 }
971 } 985 }
972 986
973 } // namespace ui 987 } // namespace ui
OLDNEW
« no previous file with comments | « no previous file | ui/events/blink/blink_event_util_unittest.cc » ('j') | ui/events/blink/blink_event_util_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698