| 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 540dfee5237bc1bd87b34cd1cf44cdbc54dcfc6d..34fb0da6c63ccaf82f65ec9e61363e994285d05d 100644
|
| --- a/ui/touch_selection/touch_selection_controller.cc
|
| +++ b/ui/touch_selection/touch_selection_controller.cc
|
| @@ -153,11 +153,47 @@ bool TouchSelectionController::WillHandleTouchEvent(const MotionEvent& event) {
|
| return false;
|
| }
|
|
|
| -void TouchSelectionController::OnLongPressEvent() {
|
| +bool TouchSelectionController::WillHandleLongPressEvent(
|
| + const gfx::PointF& location) {
|
| + if (WillHandleTapOrLongPress(location))
|
| + return true;
|
| +
|
| response_pending_input_event_ = LONG_PRESS;
|
| ShowSelectionHandlesAutomatically();
|
| ShowInsertionHandleAutomatically();
|
| ResetCachedValuesIfInactive();
|
| + return false;
|
| +}
|
| +
|
| +bool TouchSelectionController::WillHandleTapEvent(const gfx::PointF& location) {
|
| + if (WillHandleTapOrLongPress(location))
|
| + return true;
|
| +
|
| + response_pending_input_event_ = TAP;
|
| + if (!is_selection_active_)
|
| + activate_selection_automatically_ = false;
|
| + ShowInsertionHandleAutomatically();
|
| + if (selection_empty_ && !show_on_tap_for_empty_editable_)
|
| + DeactivateInsertion();
|
| + ResetCachedValuesIfInactive();
|
| + return false;
|
| +}
|
| +
|
| +bool TouchSelectionController::WillHandleTapOrLongPress(
|
| + const gfx::PointF& location) {
|
| + // If there is an active selection that was not triggered by a user gesture,
|
| + // allow showing the handles for that selection if a gesture occurs within
|
| + // the selection rect. Note that this hit test is at best a crude
|
| + // approximation, and may swallow taps that actually fall outside the
|
| + // real selection.
|
| + if (!is_selection_active_ && !is_insertion_active_) {
|
| + if (GetStartPosition() != GetEndPosition() &&
|
| + RectFBetweenSelectionBounds(start_, end_).Contains(location)) {
|
| + AllowShowingFromCurrentSelection();
|
| + return true;
|
| + }
|
| + }
|
| + return false;
|
| }
|
|
|
| void TouchSelectionController::AllowShowingFromCurrentSelection() {
|
| @@ -173,16 +209,6 @@ void TouchSelectionController::AllowShowingFromCurrentSelection() {
|
| OnInsertionChanged();
|
| }
|
|
|
| -void TouchSelectionController::OnTapEvent() {
|
| - response_pending_input_event_ = TAP;
|
| - if (!is_selection_active_)
|
| - activate_selection_automatically_ = false;
|
| - ShowInsertionHandleAutomatically();
|
| - if (selection_empty_ && !show_on_tap_for_empty_editable_)
|
| - DeactivateInsertion();
|
| - ResetCachedValuesIfInactive();
|
| -}
|
| -
|
| void TouchSelectionController::HideAndDisallowShowingAutomatically() {
|
| response_pending_input_event_ = INPUT_EVENT_TYPE_NONE;
|
| DeactivateInsertion();
|
|
|