summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mihai Popa <popam@google.com> 2018-02-21 11:51:34 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-02-21 11:51:34 +0000
commit78cab5a5961b37d984069697dd0ba684184de6bd (patch)
tree1362441a883e5d006c0ecd833b1221fe3703fee8
parent756d00b9b8c4ca90072aa8f6e529ddcd8b6070ce (diff)
parenta4e39c4f596ebcc3769afdc358d78386c9f6f63b (diff)
Merge "[Magnifier-23] Fix invisible cursor in magnifier"
-rw-r--r--core/java/android/widget/Editor.java21
-rw-r--r--core/java/android/widget/TextView.java4
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 708d008d2ca1..2cfdb7693a38 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -6994,9 +6994,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();