Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af7dcdf3 authored by Victoria Lease's avatar Victoria Lease
Browse files

use SpannedStringBuilder to build a SpannedString

It turns out that copy constructors do not respect NoCopySpan. Using
SpannedStringBuilder addresses this oversight.

Bug: 11326070
Change-Id: I949ef4f477d65cf645f3b1b2651f8ce423995237
parent 74082349
Loading
Loading
Loading
Loading
+2 −13
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import android.text.Selection;
import android.text.SpanWatcher;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.SpannedString;
import android.text.StaticLayout;
@@ -3494,19 +3495,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
            ss.selEnd = end;

            if (mText instanceof Spanned) {
                /*
                 * Calling setText() strips off any ChangeWatchers;
                 * strip them now to avoid leaking references.
                 * But do it to a copy so that if there are any
                 * further changes to the text of this view, it
                 * won't get into an inconsistent state.
                 */

                Spannable sp = new SpannableString(mText);

                for (ChangeWatcher cw : sp.getSpans(0, sp.length(), ChangeWatcher.class)) {
                    sp.removeSpan(cw);
                }
                Spannable sp = new SpannableStringBuilder(mText);

                if (mEditor != null) {
                    removeMisspelledSpans(sp);