Instead of ignoring PARAGRAPH spans, fix them.
I don't know what or when this flag is set, but it's only bad news. Luckily, we can just remove it. Bug: 12119393 Change-Id: I2952138c8ce517535b91e0fe25d2cf4960e02862main
parent
7a904514fb
commit
330d2720bb
|
@ -40,12 +40,17 @@ public final class SpannableStringUtils {
|
||||||
* are out of range in <code>dest</code>.
|
* are out of range in <code>dest</code>.
|
||||||
*/
|
*/
|
||||||
public static void copyNonParagraphSuggestionSpansFrom(Spanned source, int start, int end,
|
public static void copyNonParagraphSuggestionSpansFrom(Spanned source, int start, int end,
|
||||||
Spannable dest, int destoff) {
|
Spannable dest, int destoff) {
|
||||||
Object[] spans = source.getSpans(start, end, SuggestionSpan.class);
|
Object[] spans = source.getSpans(start, end, SuggestionSpan.class);
|
||||||
|
|
||||||
for (int i = 0; i < spans.length; i++) {
|
for (int i = 0; i < spans.length; i++) {
|
||||||
int fl = source.getSpanFlags(spans[i]);
|
int fl = source.getSpanFlags(spans[i]);
|
||||||
if (0 != (fl & Spannable.SPAN_PARAGRAPH)) continue;
|
// We don't care about the PARAGRAPH flag in LatinIME code. However, if this flag
|
||||||
|
// is set, Spannable#setSpan will throw an exception unless the span is on the edge
|
||||||
|
// of a word. But the spans have been split into two by the getText{Before,After}Cursor
|
||||||
|
// methods, so after concatenation they may end in the middle of a word.
|
||||||
|
// Since we don't use them, we can just remove them and avoid crashing.
|
||||||
|
fl &= ~Spannable.SPAN_PARAGRAPH;
|
||||||
|
|
||||||
int st = source.getSpanStart(spans[i]);
|
int st = source.getSpanStart(spans[i]);
|
||||||
int en = source.getSpanEnd(spans[i]);
|
int en = source.getSpanEnd(spans[i]);
|
||||||
|
|
Loading…
Reference in New Issue