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