Chromium Code Reviews| Index: ui/chromeos/touch_exploration_controller.cc |
| diff --git a/ui/chromeos/touch_exploration_controller.cc b/ui/chromeos/touch_exploration_controller.cc |
| index 6fce4a307e29cec40ad781971561826bce3df3f9..0a624cd932963079d84858c0d4806be7e4d54450 100644 |
| --- a/ui/chromeos/touch_exploration_controller.cc |
| +++ b/ui/chromeos/touch_exploration_controller.cc |
| @@ -72,6 +72,11 @@ void TouchExplorationController::SetExcludeBounds(const gfx::Rect& bounds) { |
| exclude_bounds_ = bounds; |
| } |
| +void TouchExplorationController::SetLiftActivationBounds( |
| + const gfx::Rect& bounds) { |
| + lift_activation_bounds_ = bounds; |
| +} |
| + |
| ui::EventRewriteStatus TouchExplorationController::RewriteEvent( |
| const ui::Event& event, |
| std::unique_ptr<ui::Event>* rewritten_event) { |
| @@ -473,6 +478,12 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploration( |
| } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) { |
| initial_press_.reset(new TouchEvent(event)); |
| StartTapTimer(); |
| + if (!lift_activation_bounds_.IsEmpty()) { |
| + gfx::Point location = event.location(); |
| + root_window_->GetHost()->ConvertScreenInPixelsToDIP(&location); |
| + if (lift_activation_bounds_.Contains(location)) |
| + DispatchSynthesizedTap(); |
|
dmazzoni
2017/05/15 21:24:34
I think you'll want to call it from more than one
David Tseng
2017/05/16 16:07:34
Sending a click event maps to forceClickOnCurrentI
David Tseng
2017/05/16 16:07:34
Isn't a quick tap just pass through mode? i.e. it
|
| + } |
| SET_STATE(TOUCH_EXPLORE_RELEASED); |
| } else if (type != ui::ET_TOUCH_MOVED) { |
| NOTREACHED(); |
| @@ -644,11 +655,13 @@ void TouchExplorationController::SendSimulatedClick() { |
| return; |
| } |
| - // If we don't have an anchor point, we can't send a simulated click. |
| + DispatchSynthesizedTap(); |
| +} |
| + |
| +void TouchExplorationController::DispatchSynthesizedTap() { |
|
dmazzoni
2017/05/15 21:24:35
Rather than splitting SendSimulatedClick into two
David Tseng
2017/05/16 16:07:34
Ditto.
|
| if (anchor_point_state_ == ANCHOR_POINT_NONE) |
| return; |
| - // Otherwise send a simulated press/release at the anchor point. |
| std::unique_ptr<ui::TouchEvent> touch_press; |
| touch_press.reset(new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(), |
| Now(), |