Loading core/java/android/widget/TextView.java +45 −49 Original line number Diff line number Diff line Loading @@ -3997,7 +3997,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } if (mBlink != null) { mBlink.cancel(); mBlink.removeCallbacks(mBlink); } if (mInsertionPointCursorController != null) { Loading Loading @@ -5421,19 +5421,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener invalidate(); int curs = getSelectionStart(); if (curs >= 0 || (mGravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { if (curs >= 0 || (mGravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { registerForPreDraw(); } if (curs >= 0) { mHighlightPathBogus = true; if (isFocused()) { mShowCursor = SystemClock.uptimeMillis(); makeBlink(); } } checkForResize(); } Loading Loading @@ -6589,6 +6584,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener */ @android.view.RemotableViewMethod public void setCursorVisible(boolean visible) { if (mCursorVisible != visible) { mCursorVisible = visible; invalidate(); Loading @@ -6597,6 +6593,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // InsertionPointCursorController depends on mCursorVisible prepareCursorControllers(); } } private boolean isCursorVisible() { return mCursorVisible && isTextEditable(); Loading Loading @@ -6934,13 +6931,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (oldStart >= 0 || newStart >= 0) { invalidateCursor(Selection.getSelectionStart(buf), oldStart, newStart); registerForPreDraw(); if (isFocused()) { mShowCursor = SystemClock.uptimeMillis(); makeBlink(); } } } if (what == Selection.SELECTION_START) { mHighlightPathBogus = true; Loading Loading @@ -7089,22 +7082,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } private void makeBlink() { if (!isCursorVisible()) { if (mBlink != null) { mBlink.removeCallbacks(mBlink); } return; } if (mBlink == null) mBlink = new Blink(this); mBlink.removeCallbacks(mBlink); mBlink.postAtTime(mBlink, mShowCursor + BLINK); } /** * @hide */ Loading Loading @@ -7271,12 +7248,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (hasWindowFocus) { if (mBlink != null) { mBlink.uncancel(); if (isFocused()) { mShowCursor = SystemClock.uptimeMillis(); makeBlink(); } } } else { if (mBlink != null) { mBlink.cancel(); Loading Loading @@ -7512,11 +7485,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener TextView tv = mView.get(); if (tv != null && tv.isFocused()) { int st = tv.getSelectionStart(); int en = tv.getSelectionEnd(); if (st == en && st >= 0 && en >= 0) { if (tv != null && tv.shouldBlink()) { if (tv.mLayout != null) { tv.invalidateCursorPath(); } Loading @@ -7524,7 +7493,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener postAtTime(this, SystemClock.uptimeMillis() + BLINK); } } } void cancel() { if (!mCancelled) { Loading @@ -7538,6 +7506,34 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } /** * @return True when the TextView isFocused and has a valid zero-length selection (cursor). */ private boolean shouldBlink() { if (!isFocused()) return false; final int start = getSelectionStart(); if (start < 0) return false; final int end = getSelectionEnd(); if (end < 0) return false; return start == end; } private void makeBlink() { if (isCursorVisible()) { if (shouldBlink()) { mShowCursor = SystemClock.uptimeMillis(); if (mBlink == null) mBlink = new Blink(this); mBlink.removeCallbacks(mBlink); mBlink.postAtTime(mBlink, mShowCursor + BLINK); } } else { if (mBlink != null) mBlink.removeCallbacks(mBlink); } } @Override protected float getLeftFadingEdgeStrength() { if (mCurrentAlpha <= ViewConfiguration.ALPHA_THRESHOLD_INT) return 0.0f; Loading Loading
core/java/android/widget/TextView.java +45 −49 Original line number Diff line number Diff line Loading @@ -3997,7 +3997,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } if (mBlink != null) { mBlink.cancel(); mBlink.removeCallbacks(mBlink); } if (mInsertionPointCursorController != null) { Loading Loading @@ -5421,19 +5421,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener invalidate(); int curs = getSelectionStart(); if (curs >= 0 || (mGravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { if (curs >= 0 || (mGravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { registerForPreDraw(); } if (curs >= 0) { mHighlightPathBogus = true; if (isFocused()) { mShowCursor = SystemClock.uptimeMillis(); makeBlink(); } } checkForResize(); } Loading Loading @@ -6589,6 +6584,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener */ @android.view.RemotableViewMethod public void setCursorVisible(boolean visible) { if (mCursorVisible != visible) { mCursorVisible = visible; invalidate(); Loading @@ -6597,6 +6593,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // InsertionPointCursorController depends on mCursorVisible prepareCursorControllers(); } } private boolean isCursorVisible() { return mCursorVisible && isTextEditable(); Loading Loading @@ -6934,13 +6931,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (oldStart >= 0 || newStart >= 0) { invalidateCursor(Selection.getSelectionStart(buf), oldStart, newStart); registerForPreDraw(); if (isFocused()) { mShowCursor = SystemClock.uptimeMillis(); makeBlink(); } } } if (what == Selection.SELECTION_START) { mHighlightPathBogus = true; Loading Loading @@ -7089,22 +7082,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } private void makeBlink() { if (!isCursorVisible()) { if (mBlink != null) { mBlink.removeCallbacks(mBlink); } return; } if (mBlink == null) mBlink = new Blink(this); mBlink.removeCallbacks(mBlink); mBlink.postAtTime(mBlink, mShowCursor + BLINK); } /** * @hide */ Loading Loading @@ -7271,12 +7248,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (hasWindowFocus) { if (mBlink != null) { mBlink.uncancel(); if (isFocused()) { mShowCursor = SystemClock.uptimeMillis(); makeBlink(); } } } else { if (mBlink != null) { mBlink.cancel(); Loading Loading @@ -7512,11 +7485,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener TextView tv = mView.get(); if (tv != null && tv.isFocused()) { int st = tv.getSelectionStart(); int en = tv.getSelectionEnd(); if (st == en && st >= 0 && en >= 0) { if (tv != null && tv.shouldBlink()) { if (tv.mLayout != null) { tv.invalidateCursorPath(); } Loading @@ -7524,7 +7493,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener postAtTime(this, SystemClock.uptimeMillis() + BLINK); } } } void cancel() { if (!mCancelled) { Loading @@ -7538,6 +7506,34 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } /** * @return True when the TextView isFocused and has a valid zero-length selection (cursor). */ private boolean shouldBlink() { if (!isFocused()) return false; final int start = getSelectionStart(); if (start < 0) return false; final int end = getSelectionEnd(); if (end < 0) return false; return start == end; } private void makeBlink() { if (isCursorVisible()) { if (shouldBlink()) { mShowCursor = SystemClock.uptimeMillis(); if (mBlink == null) mBlink = new Blink(this); mBlink.removeCallbacks(mBlink); mBlink.postAtTime(mBlink, mShowCursor + BLINK); } } else { if (mBlink != null) mBlink.removeCallbacks(mBlink); } } @Override protected float getLeftFadingEdgeStrength() { if (mCurrentAlpha <= ViewConfiguration.ALPHA_THRESHOLD_INT) return 0.0f; Loading