Keep suggestions and compose hint on clear styles

pull/205/head
M66B 3 years ago
parent db7e88ba7b
commit 84a60a5c7a

@ -40,6 +40,7 @@ import android.text.style.QuoteSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.SuggestionSpan;
import android.text.style.TypefaceSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
@ -631,18 +632,24 @@ public class StyleHelper {
if (e + 1 < edit.length() && edit.charAt(e) == '\n')
e++;
for (Object span : edit.getSpans(start, e, Object.class))
if (!(span instanceof ImageSpan)) {
int sstart = edit.getSpanStart(span);
int send = edit.getSpanEnd(span);
int flags = edit.getSpanFlags(span);
if (sstart < start && send > start)
setSpan(edit, span, sstart, start, flags, etBody.getContext());
if (sstart < end && send > end)
setSpan(edit, span, e, send, flags, etBody.getContext());
edit.removeSpan(span);
}
for (Object span : edit.getSpans(start, e, Object.class)) {
if (span instanceof ImageSpan || span instanceof SuggestionSpan)
continue;
int sstart = edit.getSpanStart(span);
int send = edit.getSpanEnd(span);
int flags = edit.getSpanFlags(span);
if ((flags & Spanned.SPAN_COMPOSING) != 0)
continue;
if (sstart < start && send > start)
setSpan(edit, span, sstart, start, flags, etBody.getContext());
if (sstart < end && send > end)
setSpan(edit, span, e, send, flags, etBody.getContext());
edit.removeSpan(span);
}
etBody.setText(edit);
etBody.setSelection(start, e);
@ -695,9 +702,16 @@ public class StyleHelper {
} else if (action == R.id.menu_clear) {
Log.breadcrumb("style", "action", "clear/all");
for (Object span : edit.getSpans(0, etBody.length(), Object.class))
if (!(span instanceof ImageSpan))
edit.removeSpan(span);
for (Object span : edit.getSpans(0, etBody.length(), Object.class)) {
if (span instanceof ImageSpan || span instanceof SuggestionSpan)
continue;
int flags = edit.getSpanFlags(span);
if ((flags & Spanned.SPAN_COMPOSING) != 0)
continue;
edit.removeSpan(span);
}
etBody.setText(edit);
etBody.setSelection(start, end);

Loading…
Cancel
Save