diff options
-rw-r--r-- | core/java/android/widget/TextView.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 39f6e27..c61aad1 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -9228,21 +9228,23 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override public boolean performLongClick() { + boolean handled = false; + boolean vibrate = true; + if (super.performLongClick()) { mDiscardNextActionUp = true; - return true; + handled = true; } - boolean handled = false; - // Long press in empty space moves cursor and shows the Paste affordance if available. - if (!isPositionOnText(mLastDownPositionX, mLastDownPositionY) && + if (!handled && !isPositionOnText(mLastDownPositionX, mLastDownPositionY) && mInsertionControllerEnabled) { final int offset = getOffsetForPosition(mLastDownPositionX, mLastDownPositionY); stopSelectionActionMode(); Selection.setSelection((Spannable) mText, offset); getInsertionController().showWithActionPopup(); handled = true; + vibrate = false; } if (!handled && mSelectionActionMode != null) { @@ -9264,10 +9266,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } // Start a new selection - handled |= !handled && startSelectionActionMode(); + if (!handled) { + handled = startSelectionActionMode(); + } - if (handled) { + if (vibrate) { performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } + + if (handled) { mDiscardNextActionUp = true; } |