diff options
author | varunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-07 15:33:05 +0000 |
---|---|---|
committer | varunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-07 15:33:05 +0000 |
commit | f884a00aa8fe68434d1fe20e4b950bec30a4d2cc (patch) | |
tree | d4b494c5539709a26b19369f96321d9f726a0902 /ui/base | |
parent | 1fa6de0736dc622711356cde6c08b8f95aa597ce (diff) | |
download | chromium_src-f884a00aa8fe68434d1fe20e4b950bec30a4d2cc.zip chromium_src-f884a00aa8fe68434d1fe20e4b950bec30a4d2cc.tar.gz chromium_src-f884a00aa8fe68434d1fe20e4b950bec30a4d2cc.tar.bz2 |
Fix TAP_DOWN gesture event:
1. GESTURE_TAP_DOWN should be sent only on the first TOUCH_PRESSED.
2. New gesture GESTURE_BEGIN shuold be sent on all TOUCH_PRESSED.
3. Rename GESTURE_TAP_UP to GESTURE_END.
BUG=131007
TEST=manual
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=140967
Review URL: https://chromiumcodereview.appspot.com/10533029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141011 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base')
-rw-r--r-- | ui/base/events.h | 5 | ||||
-rw-r--r-- | ui/base/gestures/gesture_sequence.cc | 22 | ||||
-rw-r--r-- | ui/base/gestures/gesture_sequence.h | 3 |
3 files changed, 23 insertions, 7 deletions
diff --git a/ui/base/events.h b/ui/base/events.h index 6712b19..1d8b2d6 100644 --- a/ui/base/events.h +++ b/ui/base/events.h @@ -52,8 +52,9 @@ enum EventType { ET_GESTURE_SCROLL_END, ET_GESTURE_SCROLL_UPDATE, ET_GESTURE_TAP, - ET_GESTURE_TAP_DOWN, // Sent before any other gesture types. - ET_GESTURE_TAP_UP, // Sent after any other gestures. + ET_GESTURE_TAP_DOWN, + ET_GESTURE_BEGIN, // Sent before any other gesture types. + ET_GESTURE_END, // Sent after any other gestures. ET_GESTURE_DOUBLE_TAP, ET_GESTURE_TWO_FINGER_TAP, ET_GESTURE_PINCH_BEGIN, diff --git a/ui/base/gestures/gesture_sequence.cc b/ui/base/gestures/gesture_sequence.cc index f11d5d1..7e3302c 100644 --- a/ui/base/gestures/gesture_sequence.cc +++ b/ui/base/gestures/gesture_sequence.cc @@ -248,6 +248,11 @@ GestureSequence::Gestures* GestureSequence::ProcessTouchEventForGesture( const int point_id = points_[event.GetTouchId()].point_id(); if (point_id < 0) return NULL; + + // Send GESTURE_BEGIN for any touch pressed. + if (event.GetEventType() == ui::ET_TOUCH_PRESSED) + AppendBeginGestureEvent(point, gestures.get()); + switch (Signature(state_, point_id, event.GetEventType(), false)) { case GST_NO_GESTURE_FIRST_PRESSED: TouchDown(event, point, gestures.get()); @@ -351,7 +356,6 @@ GestureSequence::Gestures* GestureSequence::ProcessTouchEventForGesture( case GST_PINCH_THIRD_PRESSED: case GST_PINCH_FOURTH_PRESSED: case GST_PINCH_FIFTH_PRESSED: - AppendTapDownGestureEvent(point, gestures.get()); pinch_distance_current_ = BoundingBoxDiagonal(bounding_box_); pinch_distance_start_ = pinch_distance_current_; break; @@ -359,7 +363,7 @@ GestureSequence::Gestures* GestureSequence::ProcessTouchEventForGesture( if (event.GetEventType() == ui::ET_TOUCH_RELEASED || event.GetEventType() == ui::ET_TOUCH_CANCELLED) - AppendTapUpGestureEvent(point, gestures.get()); + AppendEndGestureEvent(point, gestures.get()); if (state_ != last_state) DVLOG(4) << "Gesture Sequence" @@ -476,13 +480,23 @@ void GestureSequence::AppendTapDownGestureEvent(const GesturePoint& point, point.first_touch_position(), flags_, base::Time::FromDoubleT(point.last_touch_time()), + 0, 0.f, 1 << point.touch_id())); +} + +void GestureSequence::AppendBeginGestureEvent(const GesturePoint& point, + Gestures* gestures) { + gestures->push_back(helper_->CreateGestureEvent( + ui::ET_GESTURE_BEGIN, + point.first_touch_position(), + flags_, + base::Time::FromDoubleT(point.last_touch_time()), point_count_, 0.f, 1 << point.touch_id())); } -void GestureSequence::AppendTapUpGestureEvent(const GesturePoint& point, +void GestureSequence::AppendEndGestureEvent(const GesturePoint& point, Gestures* gestures) { gestures->push_back(helper_->CreateGestureEvent( - ui::ET_GESTURE_TAP_UP, + ui::ET_GESTURE_END, point.first_touch_position(), flags_, base::Time::FromDoubleT(point.last_touch_time()), diff --git a/ui/base/gestures/gesture_sequence.h b/ui/base/gestures/gesture_sequence.h index b976bb3..07d8cc4 100644 --- a/ui/base/gestures/gesture_sequence.h +++ b/ui/base/gestures/gesture_sequence.h @@ -78,7 +78,8 @@ class UI_EXPORT GestureSequence { // Tap gestures. void AppendTapDownGestureEvent(const GesturePoint& point, Gestures* gestures); - void AppendTapUpGestureEvent(const GesturePoint& point, Gestures* gestures); + void AppendBeginGestureEvent(const GesturePoint& point, Gestures* gestures); + void AppendEndGestureEvent(const GesturePoint& point, Gestures* gestures); void AppendClickGestureEvent(const GesturePoint& point, Gestures* gestures); void AppendDoubleClickGestureEvent(const GesturePoint& point, Gestures* gestures); |