diff options
| author | Gilles Debunne <debunne@google.com> | 2010-10-05 18:15:12 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2010-10-05 18:15:12 -0700 |
| commit | ba04dbc6cd9ea2f504b76657c85e476a795e9b5b (patch) | |
| tree | 20cf40def9359ac7a9d8627789e0cd5239bf2cb4 /core/java/android/widget/TextView.java | |
| parent | ce2e2184bbc5530f4fac3220fdf3d1b3fc08a4c3 (diff) | |
| parent | 671b2a57bb5a2a8669d1dabe65b4080804ee350a (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.java | 15 |
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; } } |
