Chromium Code Reviews| Index: ui/base/gestures/gesture_sequence.cc |
| diff --git a/ui/base/gestures/gesture_sequence.cc b/ui/base/gestures/gesture_sequence.cc |
| index d668a1e11e6137b473fbe62185806841e5b94e56..bf62f3646099e5f9deac25b71ea9689da35b1b70 100644 |
| --- a/ui/base/gestures/gesture_sequence.cc |
| +++ b/ui/base/gestures/gesture_sequence.cc |
| @@ -368,11 +368,14 @@ GestureSequence::Gestures* GestureSequence::ProcessTouchEventForGesture( |
| case GST_PENDING_SYNTHETIC_CLICK_FIRST_RELEASED: |
| if (Click(event, point, gestures.get())) |
| point.UpdateForTap(); |
| + else |
| + AppendTapCancelGestureEvent(point, gestures.get()); |
| set_state(GS_NO_GESTURE); |
| break; |
| case GST_PENDING_SYNTHETIC_CLICK_FIRST_MOVED: |
| case GST_PENDING_SYNTHETIC_CLICK_FIRST_STATIONARY: |
| if (ScrollStart(event, point, gestures.get())) { |
| + AppendTapCancelGestureEvent(point, gestures.get()); |
|
sadrul
2012/09/09 18:33:02
This will add TAP_CANCEL after SCROLL_START. I thi
Rick Byers
2012/09/10 00:56:26
Yep, you're right - thanks. I don't think it make
|
| set_state(GS_SCROLL); |
| if (ScrollUpdate(event, point, gestures.get())) |
| point.UpdateForScroll(); |
| @@ -380,6 +383,7 @@ GestureSequence::Gestures* GestureSequence::ProcessTouchEventForGesture( |
| break; |
| case GST_PENDING_SYNTHETIC_CLICK_FIRST_RELEASED_HANDLED: |
| case GST_PENDING_SYNTHETIC_CLICK_FIRST_CANCELLED: |
| + AppendTapCancelGestureEvent(point, gestures.get()); |
| set_state(GS_NO_GESTURE); |
| break; |
| case GST_SCROLL_FIRST_MOVED: |
| @@ -394,8 +398,10 @@ GestureSequence::Gestures* GestureSequence::ProcessTouchEventForGesture( |
| ScrollEnd(event, point, gestures.get()); |
| set_state(GS_NO_GESTURE); |
| break; |
| - case GST_SCROLL_SECOND_PRESSED: |
| case GST_PENDING_SYNTHETIC_CLICK_SECOND_PRESSED: |
| + AppendTapCancelGestureEvent(point, gestures.get()); |
| + // fall through |
| + case GST_SCROLL_SECOND_PRESSED: |
| if (IsSecondTouchDownCloseEnoughForTwoFingerTap()) { |
| TwoFingerTouchDown(event, point, gestures.get()); |
| set_state(GS_PENDING_TWO_FINGER_TAP); |
| @@ -597,6 +603,16 @@ void GestureSequence::AppendTapDownGestureEvent(const GesturePoint& point, |
| 1 << point.touch_id())); |
| } |
| +void GestureSequence::AppendTapCancelGestureEvent(const GesturePoint& point, |
| + Gestures* gestures) { |
| + gestures->push_back(CreateGestureEvent( |
| + GestureEventDetails(ui::ET_GESTURE_TAP_CANCEL, 0, 0), |
| + point.first_touch_position(), |
| + flags_, |
| + base::Time::FromDoubleT(point.last_touch_time()), |
| + 1 << point.touch_id())); |
| +} |
| + |
| void GestureSequence::AppendBeginGestureEvent(const GesturePoint& point, |
| Gestures* gestures) { |
| gestures->push_back(CreateGestureEvent( |