diff options
author | Gilles Debunne <debunne@google.com> | 2012-01-19 17:23:12 -0800 |
---|---|---|
committer | Gilles Debunne <debunne@google.com> | 2012-01-19 17:36:45 -0800 |
commit | 92db51938f6dac6227ab362e851858bc848efd9e (patch) | |
tree | 8d78c62102d6abafe9dc5f7973128eafde86c14f | |
parent | fa78fe0d70fe7e6a9eb19680888b617ea57eaad4 (diff) | |
download | frameworks_base-92db51938f6dac6227ab362e851858bc848efd9e.zip frameworks_base-92db51938f6dac6227ab362e851858bc848efd9e.tar.gz frameworks_base-92db51938f6dac6227ab362e851858bc848efd9e.tar.bz2 |
Make sure text selection always starts
When text can indeed be selected, we should always initiate
a text selection on long press. When the WordIterator fails
(for instance if the text is entirely made of punctuation
characters, maybe also with foreign languages), we select
one character.
Change-Id: I842507f7cbaed9a924d3176ea8ed6586f3548366
-rw-r--r-- | core/java/android/widget/TextView.java | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index e508e9a..1ec869d 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -8920,14 +8920,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener wordIterator.setCharSequence(mText, minOffset, maxOffset); selectionStart = wordIterator.getBeginning(minOffset); - if (selectionStart == BreakIterator.DONE) return false; - selectionEnd = wordIterator.getEnd(maxOffset); - if (selectionEnd == BreakIterator.DONE) return false; - if (selectionStart == selectionEnd) { + if (selectionStart == BreakIterator.DONE || selectionEnd == BreakIterator.DONE || + selectionStart == selectionEnd) { // Possible when the word iterator does not properly handle the text's language - long range = getCharRange(selectionStart); + long range = getCharRange(minOffset); selectionStart = extractRangeStartFromLong(range); selectionEnd = extractRangeEndFromLong(range); } |