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

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

Issue 289373009: Support tap_count in ui::GestureProvider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small cleanup. Created 6 years, 7 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 | Annotate | Revision Log
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 #ifndef UI_EVENTS_GESTURE_DETECTION_GESTURE_DETECTOR_H_ 5 #ifndef UI_EVENTS_GESTURE_DETECTION_GESTURE_DETECTOR_H_
6 #define UI_EVENTS_GESTURE_DETECTION_GESTURE_DETECTOR_H_ 6 #define UI_EVENTS_GESTURE_DETECTION_GESTURE_DETECTOR_H_
7 7
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "ui/events/gesture_detection/gesture_detection_export.h" 10 #include "ui/events/gesture_detection/gesture_detection_export.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 62
63 // Maximum time the second pointer can be active for a two finger tap. 63 // Maximum time the second pointer can be active for a two finger tap.
64 base::TimeDelta two_finger_tap_timeout; 64 base::TimeDelta two_finger_tap_timeout;
65 }; 65 };
66 66
67 class GestureListener { 67 class GestureListener {
68 public: 68 public:
69 virtual ~GestureListener() {} 69 virtual ~GestureListener() {}
70 virtual bool OnDown(const MotionEvent& e) = 0; 70 virtual bool OnDown(const MotionEvent& e) = 0;
71 virtual void OnShowPress(const MotionEvent& e) = 0; 71 virtual void OnShowPress(const MotionEvent& e) = 0;
72 virtual bool OnSingleTapUp(const MotionEvent& e) = 0; 72 virtual bool OnSingleTapUp(const MotionEvent& e, int tap_count) = 0;
73 virtual bool OnLongPress(const MotionEvent& e) = 0; 73 virtual bool OnLongPress(const MotionEvent& e) = 0;
74 virtual bool OnScroll(const MotionEvent& e1, 74 virtual bool OnScroll(const MotionEvent& e1,
75 const MotionEvent& e2, 75 const MotionEvent& e2,
76 float distance_x, 76 float distance_x,
77 float distance_y) = 0; 77 float distance_y) = 0;
78 virtual bool OnFling(const MotionEvent& e1, 78 virtual bool OnFling(const MotionEvent& e1,
79 const MotionEvent& e2, 79 const MotionEvent& e2,
80 float velocity_x, 80 float velocity_x,
81 float velocity_y) = 0; 81 float velocity_y) = 0;
82 // Added for Chromium (Aura). 82 // Added for Chromium (Aura).
83 virtual bool OnSwipe(const MotionEvent& e1, 83 virtual bool OnSwipe(const MotionEvent& e1,
84 const MotionEvent& e2, 84 const MotionEvent& e2,
85 float velocity_x, 85 float velocity_x,
86 float velocity_y) = 0; 86 float velocity_y) = 0;
87 virtual bool OnTwoFingerTap(const MotionEvent& e1, 87 virtual bool OnTwoFingerTap(const MotionEvent& e1,
88 const MotionEvent& e2) = 0; 88 const MotionEvent& e2) = 0;
89 }; 89 };
90 90
91 class DoubleTapListener { 91 class DoubleTapListener {
92 public: 92 public:
93 virtual ~DoubleTapListener() {} 93 virtual ~DoubleTapListener() {}
94 virtual bool OnSingleTapConfirmed(const MotionEvent& e) = 0; 94 virtual bool OnSingleTapConfirmed(const MotionEvent& e, int tap_count) = 0;
95 virtual bool OnDoubleTap(const MotionEvent& e) = 0; 95 virtual bool OnDoubleTap(const MotionEvent& e) = 0;
96 virtual bool OnDoubleTapEvent(const MotionEvent& e) = 0; 96 virtual bool OnDoubleTapEvent(const MotionEvent& e) = 0;
97 }; 97 };
98 98
99 // A convenience class to extend when you only want to listen for a subset 99 // A convenience class to extend when you only want to listen for a subset
100 // of all the gestures. This implements all methods in the 100 // of all the gestures. This implements all methods in the
101 // |GestureListener| and |DoubleTapListener| but does 101 // |GestureListener| and |DoubleTapListener| but does
102 // nothing and returns false for all applicable methods. 102 // nothing and returns false for all applicable methods.
103 class SimpleGestureListener : public GestureListener, 103 class SimpleGestureListener : public GestureListener,
104 public DoubleTapListener { 104 public DoubleTapListener {
105 public: 105 public:
106 // GestureListener implementation. 106 // GestureListener implementation.
107 virtual bool OnDown(const MotionEvent& e) OVERRIDE; 107 virtual bool OnDown(const MotionEvent& e) OVERRIDE;
108 virtual void OnShowPress(const MotionEvent& e) OVERRIDE; 108 virtual void OnShowPress(const MotionEvent& e) OVERRIDE;
109 virtual bool OnSingleTapUp(const MotionEvent& e) OVERRIDE; 109 virtual bool OnSingleTapUp(const MotionEvent& e, int tap_count) OVERRIDE;
110 virtual bool OnLongPress(const MotionEvent& e) OVERRIDE; 110 virtual bool OnLongPress(const MotionEvent& e) OVERRIDE;
111 virtual bool OnScroll(const MotionEvent& e1, 111 virtual bool OnScroll(const MotionEvent& e1,
112 const MotionEvent& e2, 112 const MotionEvent& e2,
113 float distance_x, 113 float distance_x,
114 float distance_y) OVERRIDE; 114 float distance_y) OVERRIDE;
115 virtual bool OnFling(const MotionEvent& e1, 115 virtual bool OnFling(const MotionEvent& e1,
116 const MotionEvent& e2, 116 const MotionEvent& e2,
117 float velocity_x, 117 float velocity_x,
118 float velocity_y) OVERRIDE; 118 float velocity_y) OVERRIDE;
119 virtual bool OnSwipe(const MotionEvent& e1, 119 virtual bool OnSwipe(const MotionEvent& e1,
120 const MotionEvent& e2, 120 const MotionEvent& e2,
121 float velocity_x, 121 float velocity_x,
122 float velocity_y) OVERRIDE; 122 float velocity_y) OVERRIDE;
123 virtual bool OnTwoFingerTap(const MotionEvent& e1, 123 virtual bool OnTwoFingerTap(const MotionEvent& e1,
124 const MotionEvent& e2) OVERRIDE; 124 const MotionEvent& e2) OVERRIDE;
125 125
126 // DoubleTapListener implementation. 126 // DoubleTapListener implementation.
127 virtual bool OnSingleTapConfirmed(const MotionEvent& e) OVERRIDE; 127 virtual bool OnSingleTapConfirmed(const MotionEvent& e,
128 int tap_count) OVERRIDE;
128 virtual bool OnDoubleTap(const MotionEvent& e) OVERRIDE; 129 virtual bool OnDoubleTap(const MotionEvent& e) OVERRIDE;
129 virtual bool OnDoubleTapEvent(const MotionEvent& e) OVERRIDE; 130 virtual bool OnDoubleTapEvent(const MotionEvent& e) OVERRIDE;
130 }; 131 };
131 132
132 GestureDetector(const Config& config, 133 GestureDetector(const Config& config,
133 GestureListener* listener, 134 GestureListener* listener,
134 DoubleTapListener* optional_double_tap_listener); 135 DoubleTapListener* optional_double_tap_listener);
135 ~GestureDetector(); 136 ~GestureDetector();
136 137
137 bool OnTouchEvent(const MotionEvent& ev); 138 bool OnTouchEvent(const MotionEvent& ev);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 base::TimeDelta two_finger_tap_timeout_; 176 base::TimeDelta two_finger_tap_timeout_;
176 177
177 bool still_down_; 178 bool still_down_;
178 bool defer_confirm_single_tap_; 179 bool defer_confirm_single_tap_;
179 bool in_longpress_; 180 bool in_longpress_;
180 bool always_in_tap_region_; 181 bool always_in_tap_region_;
181 bool always_in_bigger_tap_region_; 182 bool always_in_bigger_tap_region_;
182 bool two_finger_tap_allowed_for_gesture_; 183 bool two_finger_tap_allowed_for_gesture_;
183 184
184 scoped_ptr<MotionEvent> current_down_event_; 185 scoped_ptr<MotionEvent> current_down_event_;
186 scoped_ptr<MotionEvent> previous_down_event_;
185 scoped_ptr<MotionEvent> previous_up_event_; 187 scoped_ptr<MotionEvent> previous_up_event_;
186 scoped_ptr<MotionEvent> secondary_pointer_down_event_; 188 scoped_ptr<MotionEvent> secondary_pointer_down_event_;
187 189
188 // True when the user is still touching for the second tap (down, move, and 190 // True when the user is still touching for the second tap (down, move, and
189 // up events). Can only be true if there is a double tap listener attached. 191 // up events). Can only be true if there is a double tap listener attached.
190 bool is_double_tapping_; 192 bool is_double_tapping_;
191 193
192 float last_focus_x_; 194 float last_focus_x_;
193 float last_focus_y_; 195 float last_focus_y_;
194 float down_focus_x_; 196 float down_focus_x_;
195 float down_focus_y_; 197 float down_focus_y_;
196 198
197 bool longpress_enabled_; 199 bool longpress_enabled_;
198 bool swipe_enabled_; 200 bool swipe_enabled_;
199 bool two_finger_tap_enabled_; 201 bool two_finger_tap_enabled_;
200 202
203 // If the double tap gesture is disabled, this counts the number of successive
204 // taps which occured within the double tap window. The current maximum is 3.
205 int tap_count_;
206
201 // Determines speed during touch scrolling. 207 // Determines speed during touch scrolling.
202 VelocityTrackerState velocity_tracker_; 208 VelocityTrackerState velocity_tracker_;
203 209
204 DISALLOW_COPY_AND_ASSIGN(GestureDetector); 210 DISALLOW_COPY_AND_ASSIGN(GestureDetector);
205 }; 211 };
206 212
207 } // namespace ui 213 } // namespace ui
208 214
209 #endif // UI_EVENTS_GESTURE_DETECTION_GESTURE_DETECTOR_H_ 215 #endif // UI_EVENTS_GESTURE_DETECTION_GESTURE_DETECTOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698