am 330d2720: Instead of ignoring PARAGRAPH spans, fix them.

* commit '330d2720bb3b0b6333ec2f61f056a4f46cbfa106':
  Instead of ignoring PARAGRAPH spans, fix them.
main
Jean Chalard 2013-12-13 08:34:17 -08:00 committed by Android Git Automerger
commit a231b3baa2
1 changed files with 7 additions and 2 deletions

View File

@ -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]);