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

Side by Side Diff: ui/events/gesture_detection/gesture_detector.cc

Issue 617423002: Make GestureTextSelector detect its own gestures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sort gyp/gn Created 6 years, 2 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/gesture_detection/gesture_detector.h" 8 #include "ui/events/gesture_detection/gesture_detector.h"
9 9
10 #include <cmath> 10 #include <cmath>
11 11
12 #include "base/timer/timer.h" 12 #include "base/timer/timer.h"
13 #include "ui/events/gesture_detection/gesture_listeners.h"
13 #include "ui/events/gesture_detection/motion_event.h" 14 #include "ui/events/gesture_detection/motion_event.h"
14 15
15 namespace ui { 16 namespace ui {
16 namespace { 17 namespace {
17 18
18 // Using a small epsilon when comparing slop distances allows pixel perfect 19 // Using a small epsilon when comparing slop distances allows pixel perfect
19 // slop determination when using fractional DIP coordinates (assuming the slop 20 // slop determination when using fractional DIP coordinates (assuming the slop
20 // region and DPI scale are reasonably proportioned). 21 // region and DPI scale are reasonably proportioned).
21 const float kSlopEpsilon = .05f; 22 const float kSlopEpsilon = .05f;
22 23
(...skipping 27 matching lines...) Expand all
50 swipe_enabled(false), 51 swipe_enabled(false),
51 minimum_swipe_velocity(20), 52 minimum_swipe_velocity(20),
52 maximum_swipe_deviation_angle(20.f), 53 maximum_swipe_deviation_angle(20.f),
53 two_finger_tap_enabled(false), 54 two_finger_tap_enabled(false),
54 two_finger_tap_max_separation(300), 55 two_finger_tap_max_separation(300),
55 two_finger_tap_timeout(base::TimeDelta::FromMilliseconds(700)) { 56 two_finger_tap_timeout(base::TimeDelta::FromMilliseconds(700)) {
56 } 57 }
57 58
58 GestureDetector::Config::~Config() {} 59 GestureDetector::Config::~Config() {}
59 60
60 bool GestureDetector::SimpleGestureListener::OnDown(const MotionEvent& e) {
61 return false;
62 }
63
64 void GestureDetector::SimpleGestureListener::OnShowPress(const MotionEvent& e) {
65 }
66
67 bool GestureDetector::SimpleGestureListener::OnSingleTapUp(
68 const MotionEvent& e) {
69 return false;
70 }
71
72 void GestureDetector::SimpleGestureListener::OnLongPress(const MotionEvent& e) {
73 }
74
75 bool GestureDetector::SimpleGestureListener::OnScroll(const MotionEvent& e1,
76 const MotionEvent& e2,
77 float distance_x,
78 float distance_y) {
79 return false;
80 }
81
82 bool GestureDetector::SimpleGestureListener::OnFling(const MotionEvent& e1,
83 const MotionEvent& e2,
84 float velocity_x,
85 float velocity_y) {
86 return false;
87 }
88
89 bool GestureDetector::SimpleGestureListener::OnSwipe(const MotionEvent& e1,
90 const MotionEvent& e2,
91 float velocity_x,
92 float velocity_y) {
93 return false;
94 }
95
96 bool GestureDetector::SimpleGestureListener::OnTwoFingerTap(
97 const MotionEvent& e1,
98 const MotionEvent& e2) {
99 return false;
100 }
101
102 bool GestureDetector::SimpleGestureListener::OnSingleTapConfirmed(
103 const MotionEvent& e) {
104 return false;
105 }
106
107 bool GestureDetector::SimpleGestureListener::OnDoubleTap(const MotionEvent& e) {
108 return false;
109 }
110
111 bool GestureDetector::SimpleGestureListener::OnDoubleTapEvent(
112 const MotionEvent& e) {
113 return false;
114 }
115
116 class GestureDetector::TimeoutGestureHandler { 61 class GestureDetector::TimeoutGestureHandler {
117 public: 62 public:
118 TimeoutGestureHandler(const Config& config, GestureDetector* gesture_detector) 63 TimeoutGestureHandler(const Config& config, GestureDetector* gesture_detector)
119 : gesture_detector_(gesture_detector) { 64 : gesture_detector_(gesture_detector) {
120 DCHECK(config.showpress_timeout <= config.longpress_timeout); 65 DCHECK(config.showpress_timeout <= config.longpress_timeout);
121 66
122 timeout_callbacks_[SHOW_PRESS] = &GestureDetector::OnShowPressTimeout; 67 timeout_callbacks_[SHOW_PRESS] = &GestureDetector::OnShowPressTimeout;
123 timeout_delays_[SHOW_PRESS] = config.showpress_timeout; 68 timeout_delays_[SHOW_PRESS] = config.showpress_timeout;
124 69
125 timeout_callbacks_[LONG_PRESS] = &GestureDetector::OnLongPressTimeout; 70 timeout_callbacks_[LONG_PRESS] = &GestureDetector::OnLongPressTimeout;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 defer_confirm_single_tap_(false), 125 defer_confirm_single_tap_(false),
181 always_in_tap_region_(false), 126 always_in_tap_region_(false),
182 always_in_bigger_tap_region_(false), 127 always_in_bigger_tap_region_(false),
183 two_finger_tap_allowed_for_gesture_(false), 128 two_finger_tap_allowed_for_gesture_(false),
184 is_double_tapping_(false), 129 is_double_tapping_(false),
185 last_focus_x_(0), 130 last_focus_x_(0),
186 last_focus_y_(0), 131 last_focus_y_(0),
187 down_focus_x_(0), 132 down_focus_x_(0),
188 down_focus_y_(0), 133 down_focus_y_(0),
189 longpress_enabled_(true), 134 longpress_enabled_(true),
135 showpress_enabled_(true),
190 swipe_enabled_(false), 136 swipe_enabled_(false),
191 two_finger_tap_enabled_(false) { 137 two_finger_tap_enabled_(false) {
192 DCHECK(listener_); 138 DCHECK(listener_);
193 Init(config); 139 Init(config);
194 } 140 }
195 141
196 GestureDetector::~GestureDetector() {} 142 GestureDetector::~GestureDetector() {}
197 143
198 bool GestureDetector::OnTouchEvent(const MotionEvent& ev) { 144 bool GestureDetector::OnTouchEvent(const MotionEvent& ev) {
199 const MotionEvent::Action action = ev.GetAction(); 145 const MotionEvent::Action action = ev.GetAction();
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 254
309 secondary_pointer_down_event_.reset(); 255 secondary_pointer_down_event_.reset();
310 always_in_tap_region_ = true; 256 always_in_tap_region_ = true;
311 always_in_bigger_tap_region_ = true; 257 always_in_bigger_tap_region_ = true;
312 still_down_ = true; 258 still_down_ = true;
313 defer_confirm_single_tap_ = false; 259 defer_confirm_single_tap_ = false;
314 two_finger_tap_allowed_for_gesture_ = two_finger_tap_enabled_; 260 two_finger_tap_allowed_for_gesture_ = two_finger_tap_enabled_;
315 261
316 // Always start the SHOW_PRESS timer before the LONG_PRESS timer to ensure 262 // Always start the SHOW_PRESS timer before the LONG_PRESS timer to ensure
317 // proper timeout ordering. 263 // proper timeout ordering.
318 timeout_handler_->StartTimeout(SHOW_PRESS); 264 if (showpress_enabled_)
265 timeout_handler_->StartTimeout(SHOW_PRESS);
319 if (longpress_enabled_) 266 if (longpress_enabled_)
320 timeout_handler_->StartTimeout(LONG_PRESS); 267 timeout_handler_->StartTimeout(LONG_PRESS);
321 handled |= listener_->OnDown(ev); 268 handled |= listener_->OnDown(ev);
322 break; 269 break;
323 270
324 case MotionEvent::ACTION_MOVE: 271 case MotionEvent::ACTION_MOVE:
325 { 272 {
326 const float scroll_x = last_focus_x_ - focus_x; 273 const float scroll_x = last_focus_x_ - focus_x;
327 const float scroll_y = last_focus_y_ - focus_y; 274 const float scroll_y = last_focus_y_ - focus_y;
328 if (is_double_tapping_) { 275 if (is_double_tapping_) {
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 return false; 491 return false;
545 492
546 if (vx_abs > vy_abs) 493 if (vx_abs > vy_abs)
547 vy = 0; 494 vy = 0;
548 else 495 else
549 vx = 0; 496 vx = 0;
550 return listener_->OnSwipe(*current_down_event_, up, vx, vy); 497 return listener_->OnSwipe(*current_down_event_, up, vx, vy);
551 } 498 }
552 499
553 } // namespace ui 500 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/gesture_detection/gesture_detector.h ('k') | ui/events/gesture_detection/gesture_listeners.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698