summaryrefslogtreecommitdiff
path: root/core/java/android/widget/TextView.java
diff options
context:
space:
mode:
authorGilles Debunne <debunne@google.com>2010-10-05 18:15:12 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-10-05 18:15:12 -0700
commitba04dbc6cd9ea2f504b76657c85e476a795e9b5b (patch)
tree20cf40def9359ac7a9d8627789e0cd5239bf2cb4 /core/java/android/widget/TextView.java
parentce2e2184bbc5530f4fac3220fdf3d1b3fc08a4c3 (diff)
parent671b2a57bb5a2a8669d1dabe65b4080804ee350a (diff)
am 671b2a57: Merge "Fix for IndexOutOfBounds in text pasting." into gingerbread
Merge commit '671b2a57bb5a2a8669d1dabe65b4080804ee350a' into gingerbread-plus-aosp * commit '671b2a57bb5a2a8669d1dabe65b4080804ee350a': Fix for IndexOutOfBounds in text pasting.
Diffstat (limited to 'core/java/android/widget/TextView.java')
-rw-r--r--core/java/android/widget/TextView.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 8d8d0afc95ed..fa95f72a4718 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -7490,16 +7490,23 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (Character.isSpaceChar(paste.charAt(0))) {
if (min > 0 && Character.isSpaceChar(mTransformed.charAt(min - 1))) {
// Two spaces at beginning of paste: remove one
+ final int originalLength = mText.length();
((Editable) mText).replace(min - 1, min, "");
- min = min - 1;
- max = max - 1;
+ // Due to filters, there is no garantee that exactly one character was
+ // removed. Count instead.
+ final int delta = mText.length() - originalLength;
+ min += delta;
+ max += delta;
}
} else {
if (min > 0 && !Character.isSpaceChar(mTransformed.charAt(min - 1))) {
// No space at beginning of paste: add one
+ final int originalLength = mText.length();
((Editable) mText).replace(min, min, " ");
- min = min + 1;
- max = max + 1;
+ // Taking possible filters into account as above.
+ final int delta = mText.length() - originalLength;
+ min += delta;
+ max += delta;
}
}