am 7ffadba5: am 1fb90497: Merge "Text blinking cursor hard to see." into ics-mr1
* commit '7ffadba5dfbeeaa93a9559ca3eaf1a7719426a5f':
Text blinking cursor hard to see.
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java
index c165bbf..e9a2644 100644
--- a/core/java/android/widget/SpellChecker.java
+++ b/core/java/android/widget/SpellChecker.java
@@ -385,7 +385,7 @@
SuggestionSpan.FLAG_EASY_CORRECT | SuggestionSpan.FLAG_MISSPELLED);
editable.setSpan(suggestionSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- mTextView.invalidateRegion(start, end);
+ mTextView.invalidateRegion(start, end, false /* No cursor involved */);
}
private class SpellParser {
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 90fb106..66fd06d 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -339,7 +339,7 @@
private int mCursorDrawableRes;
private final Drawable[] mCursorDrawable = new Drawable[2];
- private int mCursorCount; // Actual current number of used mCursorDrawable: 0, 1 or 2
+ private int mCursorCount; // Actual current number of used mCursorDrawable: 0, 1 or 2 (split)
private Drawable mSelectHandleLeft;
private Drawable mSelectHandleRight;
@@ -4322,7 +4322,7 @@
if (a >= 0 || b >= 0 || c >= 0) {
int start = Math.min(Math.min(a, b), c);
int end = Math.max(Math.max(a, b), c);
- invalidateRegion(start, end);
+ invalidateRegion(start, end, true /* Also invalidates blinking cursor */);
}
}
@@ -4331,7 +4331,7 @@
*
* @hide
*/
- void invalidateRegion(int start, int end) {
+ void invalidateRegion(int start, int end, boolean invalidateCursor) {
if (mLayout == null) {
invalidate();
} else {
@@ -4357,11 +4357,19 @@
int bottom = mLayout.getLineBottom(lineEnd);
+ if (invalidateCursor) {
+ for (int i = 0; i < mCursorCount; i++) {
+ Rect bounds = mCursorDrawable[i].getBounds();
+ top = Math.min(top, bounds.top);
+ bottom = Math.max(bottom, bounds.bottom);
+ }
+ }
+
final int compoundPaddingLeft = getCompoundPaddingLeft();
final int verticalPadding = getExtendedPaddingTop() + getVerticalOffset(true);
int left, right;
- if (lineStart == lineEnd) {
+ if (lineStart == lineEnd && !invalidateCursor) {
left = (int) mLayout.getPrimaryHorizontal(start);
right = (int) (mLayout.getPrimaryHorizontal(end) + 1.0);
left += compoundPaddingLeft;