diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/widget/Editor.java | 21 | ||||
| -rw-r--r-- | core/java/android/widget/TextView.java | 4 |
2 files changed, 20 insertions, 5 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 892b8b635207..2e7b2fd65d33 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -262,7 +262,8 @@ public class Editor { boolean mDiscardNextActionUp; boolean mIgnoreActionUpEvent; - long mShowCursor; + private long mShowCursor; + private boolean mRenderCursorRegardlessTiming; private Blink mBlink; boolean mCursorVisible = true; @@ -681,11 +682,22 @@ public class Editor { } } - boolean isCursorVisible() { + private boolean isCursorVisible() { // The default value is true, even when there is no associated Editor return mCursorVisible && mTextView.isTextEditable(); } + boolean shouldRenderCursor() { + if (!isCursorVisible()) { + return false; + } + if (mRenderCursorRegardlessTiming) { + return true; + } + final long showCursorDelta = SystemClock.uptimeMillis() - mShowCursor; + return showCursorDelta % (2 * BLINK) < BLINK; + } + void prepareCursorControllers() { boolean windowSupportsHandles = false; @@ -4666,13 +4678,18 @@ public class Editor { + mTextView.getLayout().getLineBottom(lineNumber)) / 2.0f + mTextView.getTotalPaddingTop() - mTextView.getScrollY(); + // Make the cursor visible and stop blinking. + mRenderCursorRegardlessTiming = true; + mTextView.invalidateCursorPath(); suspendBlink(); + mMagnifier.show(xPosInView, yPosInView); } protected final void dismissMagnifier() { if (mMagnifier != null) { mMagnifier.dismiss(); + mRenderCursorRegardlessTiming = false; resumeBlink(); } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 1e02c3062d97..9ac5d59119fb 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -6965,9 +6965,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener final int selEnd = getSelectionEnd(); if (mMovement != null && (isFocused() || isPressed()) && selStart >= 0) { if (selStart == selEnd) { - if (mEditor != null && mEditor.isCursorVisible() - && (SystemClock.uptimeMillis() - mEditor.mShowCursor) - % (2 * Editor.BLINK) < Editor.BLINK) { + if (mEditor != null && mEditor.shouldRenderCursor()) { if (mHighlightPathBogus) { if (mHighlightPath == null) mHighlightPath = new Path(); mHighlightPath.reset(); |
