| Index: ui/touch_selection/touch_selection_controller.cc
|
| diff --git a/ui/touch_selection/touch_selection_controller.cc b/ui/touch_selection/touch_selection_controller.cc
|
| index 90f7c6241580f66532ff678d360f070a8fa82bc3..48fba29af1acc46119e72b55bd1799679f9fc34c 100644
|
| --- a/ui/touch_selection/touch_selection_controller.cc
|
| +++ b/ui/touch_selection/touch_selection_controller.cc
|
| @@ -231,6 +231,24 @@ bool TouchSelectionController::WillHandleLongPressEvent(
|
| return false;
|
| }
|
|
|
| +void TouchSelectionController::OnScrollBeginEvent() {
|
| + // When there is an active selection, if the user performs a long-press that
|
| + // does not trigger a new selection (e.g. a long-press on an empty area) and
|
| + // then scrolls, the scroll will move the selection. In this case we will
|
| + // think incorrectly that the selection change was due to the long-press and
|
| + // will activate touch selection and start long-press drag gesture (see
|
| + // ActivateInsertionIfNecessary()). To prevent this, we need to reset the
|
| + // state of touch selection controller and long-press drag selector.
|
| + // TODO(mohsen): Remove this workaround when we have enough information about
|
| + // the cause of a selection change (see https://crbug.com/571897).
|
| + longpress_drag_selector_.OnScrollBeginEvent();
|
| + response_pending_input_event_ = INPUT_EVENT_TYPE_NONE;
|
| + if (active_status_ == INACTIVE) {
|
| + activate_insertion_automatically_ = false;
|
| + activate_selection_automatically_ = false;
|
| + }
|
| +}
|
| +
|
| void TouchSelectionController::AllowShowingFromCurrentSelection() {
|
| if (active_status_ != INACTIVE)
|
| return;
|
|
|