summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget/TextView.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/widget/TextView.java')
-rw-r--r--core/java/android/widget/TextView.java52
1 files changed, 17 insertions, 35 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 57af643..cfdcd32 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -220,8 +220,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
private boolean mTemporaryDetach;
private boolean mDispatchTemporaryDetach;
- private boolean mEatTouchRelease = false;
- private boolean mScrolled = false;
+ private boolean mDiscardNextActionUp = false;
+ private boolean mIgnoreActionUpEvent = false;
private Editable.Factory mEditableFactory = Editable.Factory.getInstance();
private Spannable.Factory mSpannableFactory = Spannable.Factory.getInstance();
@@ -7002,26 +7002,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
}
- private void onTapUpEvent(int prevStart, int prevEnd) {
- final int start = getSelectionStart();
- final int end = getSelectionEnd();
-
- if (start == end) {
- if (start >= prevStart && start < prevEnd) {
- // Restore previous selection
- Selection.setSelection((Spannable)mText, prevStart, prevEnd);
- return;
- } else {
- // Tapping outside stops selection mode, if any
- stopSelectionActionMode();
-
- if (hasInsertionController()) {
- getInsertionController().show();
- }
- }
- }
- }
-
class CommitSelectionReceiver extends ResultReceiver {
private final int mPrevStart, mPrevEnd;
@@ -7066,7 +7046,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
// Reset this state; it will be re-set if super.onTouchEvent
// causes focus to move to the view.
mTouchFocusSelected = false;
- mScrolled = false;
+ mIgnoreActionUpEvent = false;
}
final boolean superResult = super.onTouchEvent(event);
@@ -7076,8 +7056,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
* move the selection away from whatever the menu action was
* trying to affect.
*/
- if (mEatTouchRelease && action == MotionEvent.ACTION_UP) {
- mEatTouchRelease = false;
+ if (mDiscardNextActionUp && action == MotionEvent.ACTION_UP) {
+ mDiscardNextActionUp = false;
return superResult;
}
@@ -7106,7 +7086,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
mSelectionModifierCursorController.updatePosition();
}
}
- if (action == MotionEvent.ACTION_UP && !mScrolled && isFocused()) {
+ if (action == MotionEvent.ACTION_UP && !mIgnoreActionUpEvent && isFocused()) {
InputMethodManager imm = (InputMethodManager)
getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
@@ -7117,13 +7097,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
if (!mTextIsSelectable) {
- // Selection in read-only text should not bring up the IME.
+ // Show the IME, except when selecting in read-only text.
handled |= imm.showSoftInput(this, 0, csr) && (csr != null);
}
- // Cannot be done by CommitSelectionReceiver, which might not always be called,
- // for instance when dealing with an ExtractEditText.
- onTapUpEvent(oldSelStart, oldSelEnd);
+ stopSelectionActionMode();
+ if (hasInsertionController()) {
+ getInsertionController().show();
+ }
}
}
@@ -7181,7 +7162,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
@Override
public void cancelLongPress() {
super.cancelLongPress();
- mScrolled = true;
+ mIgnoreActionUpEvent = true;
}
@Override
@@ -7815,7 +7796,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
@Override
public boolean performLongClick() {
if (super.performLongClick()) {
- mEatTouchRelease = true;
+ mDiscardNextActionUp = true;
return true;
}
@@ -7826,7 +7807,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
stopSelectionActionMode();
Selection.setSelection((Spannable)mText, offset);
getInsertionController().show(0);
- mEatTouchRelease = true;
+ mDiscardNextActionUp = true;
return true;
}
@@ -7845,13 +7826,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
getSelectionController().show();
}
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
- mEatTouchRelease = true;
+ mDiscardNextActionUp = true;
return true;
}
if (startSelectionActionMode()) {
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
- mEatTouchRelease = true;
+ mDiscardNextActionUp = true;
return true;
}
@@ -8772,6 +8753,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final int slopSquared = doubleTapSlop * doubleTapSlop;
if (distanceSquared < slopSquared) {
startSelectionActionMode();
+ mDiscardNextActionUp = true;
}
}