summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGilles Debunne <debunne@google.com>2011-02-14 10:33:46 -0800
committerGilles Debunne <debunne@google.com>2011-02-14 17:48:17 -0800
commit9b90062b966c9dfeeb2ad1179b519a14cd75910c (patch)
treee4f7c83c92c33ac466162d2ca63a7a505967d012
parentd49523809714b04636a9ac43de1c508ed1dbfc38 (diff)
downloadframeworks_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.java30
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;