| Index: ui/chromeos/touch_exploration_controller.cc
|
| diff --git a/ui/chromeos/touch_exploration_controller.cc b/ui/chromeos/touch_exploration_controller.cc
|
| index 3670f1e948f213908d1884d9f844eacf35916a5c..5ec561bb70dda512e17ee8d89ce847ffd4efd6d3 100644
|
| --- a/ui/chromeos/touch_exploration_controller.cc
|
| +++ b/ui/chromeos/touch_exploration_controller.cc
|
| @@ -239,17 +239,32 @@ TouchExplorationController::InSingleTapOrTouchExploreReleased(
|
| tap_timer_.Stop();
|
| return ui::EVENT_REWRITE_DISCARD;
|
| }
|
| - // This is the second tap in a double-tap (or double tap-hold).
|
| - // We set the tap timer. If it fires before the user lifts their finger,
|
| - // one-finger passthrough begins. Otherwise, there is a touch press and
|
| - // release at the location of the last touch exploration.
|
| - state_ = DOUBLE_TAP_PENDING;
|
| - VLOG_STATE();
|
| - StartTapTimer();
|
| - // This will update as the finger moves before a possible passthrough, and
|
| - // will determine the offset.
|
| - last_unused_finger_event_.reset(new ui::TouchEvent(event));
|
| - return ui::EVENT_REWRITE_DISCARD;
|
| + if (state_ == SINGLE_TAP_RELEASED) {
|
| + // This is the second tap in a double-tap (or double tap-hold).
|
| + // We set the tap timer. If it fires before the user lifts their finger,
|
| + // one-finger passthrough begins. Otherwise, there is a touch press and
|
| + // release at the location of the last touch exploration.
|
| + state_ = DOUBLE_TAP_PENDING;
|
| + VLOG_STATE();
|
| + StartTapTimer();
|
| + // This will update as the finger moves before a possible passthrough, and
|
| + // will determine the offset.
|
| + last_unused_finger_event_.reset(new ui::TouchEvent(event));
|
| + return ui::EVENT_REWRITE_DISCARD;
|
| + } else if (state_ == TOUCH_EXPLORE_RELEASED) {
|
| + // This is the initial "press" (location, time, and touch id) of a single
|
| + // tap click.
|
| + initial_press_.reset(new ui::TouchEvent(event));
|
| + rewritten_event->reset(
|
| + new ui::TouchEvent(ui::ET_TOUCH_PRESSED,
|
| + last_touch_exploration_->location(),
|
| + initial_press_->touch_id(),
|
| + event.time_stamp()));
|
| + (*rewritten_event)->set_flags(event.flags());
|
| + state_ = TOUCH_RELEASE_PENDING;
|
| + VLOG_STATE();
|
| + return ui::EVENT_REWRITE_REWRITTEN;
|
| + }
|
| } else if (type == ui::ET_TOUCH_RELEASED && !last_touch_exploration_) {
|
| // If the previous press was discarded, we need to also handle its
|
| // release.
|
|
|