diff options
author | Gilles Debunne <debunne@google.com> | 2011-02-14 10:33:46 -0800 |
---|---|---|
committer | Gilles Debunne <debunne@google.com> | 2011-02-14 17:48:17 -0800 |
commit | 9b90062b966c9dfeeb2ad1179b519a14cd75910c (patch) | |
tree | e4f7c83c92c33ac466162d2ca63a7a505967d012 | |
parent | d49523809714b04636a9ac43de1c508ed1dbfc38 (diff) | |
download | frameworks_base-9b90062b966c9dfeeb2ad1179b519a14cd75910c.zip frameworks_base-9b90062b966c9dfeeb2ad1179b519a14cd75910c.tar.gz frameworks_base-9b90062b966c9dfeeb2ad1179b519a14cd75910c.tar.bz2 |
Double tap on a word no longer opens context menu. DO NOT MERGE
Bug 3451965
Change-Id: I2d693eda15da6562dd15eceb4109c0d588f224c9
-rw-r--r-- | core/java/android/widget/TextView.java | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 05e9678c..572bd8c 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -301,6 +301,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // Set when this TextView gained focus with some text selected. Will start selection mode. private boolean mCreatedWithASelection = false; + private boolean mNoContextMenuOnUp = false; + /* * Kick-start the font cache for the zygote process (to pay the cost of * initializing freetype for our default font only once). @@ -6777,8 +6779,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // Restore previous selection Selection.setSelection((Spannable)mText, prevStart, prevEnd); - // Tapping inside the selection displays the cut/copy/paste context menu - showContextMenu(); + // Tapping inside the selection displays the cut/copy/paste context menu, unless + // this is a double tap that should simply trigger text selection mode. + if (!mNoContextMenuOnUp) showContextMenu(); } else { // Tapping outside stops selection mode, if any stopTextSelectionMode(); @@ -6836,7 +6839,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mScrolled = false; } - final boolean superResult = super.onTouchEvent(event); + boolean result = super.onTouchEvent(event); /* * Don't handle the release after a long press, because it will @@ -6845,10 +6848,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener */ if (mEatTouchRelease && action == MotionEvent.ACTION_UP) { mEatTouchRelease = false; - return superResult; - } - - if ((mMovement != null || onCheckIsTextEditor()) && mText instanceof Spannable && mLayout != null) { + } else if ((mMovement != null || onCheckIsTextEditor()) && mText instanceof Spannable && + mLayout != null) { boolean handled = false; // Save previous selection, in case this event is used to show the IME. @@ -6889,12 +6890,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } - if (handled) { - return true; - } + if (handled) result = true; + } + + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { + mNoContextMenuOnUp = false; } - return superResult; + return result; } private void prepareCursorControllers() { @@ -8178,9 +8181,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener final int slopSquared = doubleTapSlop * doubleTapSlop; if (distanceSquared < slopSquared) { startTextSelectionMode(); - // Hacky: onTapUpEvent will open a context menu with cut/copy - // Prevent this by hiding handles which will be revived instead. - hide(); + // prevents onTapUpEvent from opening a context menu with cut/copy + mNoContextMenuOnUp = true; } } mPreviousTapPositionX = x; |