|
|
@ -595,7 +595,7 @@ public class FragmentCompose extends FragmentBase {
|
|
|
|
etBody.addTextChangedListener(new TextWatcher() {
|
|
|
|
etBody.addTextChangedListener(new TextWatcher() {
|
|
|
|
private Integer added = null;
|
|
|
|
private Integer added = null;
|
|
|
|
private Integer removed = null;
|
|
|
|
private Integer removed = null;
|
|
|
|
private Integer replaced = null;
|
|
|
|
private Integer translated = null;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void beforeTextChanged(CharSequence text, int start, int count, int after) {
|
|
|
|
public void beforeTextChanged(CharSequence text, int start, int count, int after) {
|
|
|
@ -603,9 +603,20 @@ public class FragmentCompose extends FragmentBase {
|
|
|
|
Log.i("Removed=" + start);
|
|
|
|
Log.i("Removed=" + start);
|
|
|
|
removed = start;
|
|
|
|
removed = start;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (BuildConfig.DEBUG && count - after == 1) {
|
|
|
|
|
|
|
|
replaced = start + after;
|
|
|
|
if (BuildConfig.DEBUG && count - after == 1 && start + after > 0) {
|
|
|
|
Log.i("Replaced=" + replaced);
|
|
|
|
int replaced = start + after;
|
|
|
|
|
|
|
|
Spanned spanned = ((Spanned) text);
|
|
|
|
|
|
|
|
StyleHelper.TranslatedSpan[] spans =
|
|
|
|
|
|
|
|
spanned.getSpans(replaced, replaced, StyleHelper.TranslatedSpan.class);
|
|
|
|
|
|
|
|
for (StyleHelper.TranslatedSpan span : spans) {
|
|
|
|
|
|
|
|
int end = spanned.getSpanEnd(span);
|
|
|
|
|
|
|
|
Log.i("Replaced=" + replaced);
|
|
|
|
|
|
|
|
if (end - 1 == replaced) {
|
|
|
|
|
|
|
|
translated = end - 1;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -745,20 +756,17 @@ public class FragmentCompose extends FragmentBase {
|
|
|
|
removed = null;
|
|
|
|
removed = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (replaced != null && replaced > 0) {
|
|
|
|
if (translated != null) {
|
|
|
|
StyleHelper.TranslatedSpan[] nc =
|
|
|
|
StyleHelper.TranslatedSpan[] spans =
|
|
|
|
text.getSpans(replaced - 1, replaced, StyleHelper.TranslatedSpan.class);
|
|
|
|
text.getSpans(translated, translated, StyleHelper.TranslatedSpan.class);
|
|
|
|
if (nc != null)
|
|
|
|
for (StyleHelper.TranslatedSpan span : spans) {
|
|
|
|
for (StyleHelper.TranslatedSpan p : nc) {
|
|
|
|
int start = text.getSpanStart(span);
|
|
|
|
int start = text.getSpanStart(p);
|
|
|
|
int end = text.getSpanEnd(span);
|
|
|
|
int end = text.getSpanEnd(p);
|
|
|
|
if (end == translated) {
|
|
|
|
if (end == replaced) {
|
|
|
|
text.delete(start, end);
|
|
|
|
text.delete(start, end);
|
|
|
|
text.removeSpan(span);
|
|
|
|
text.removeSpan(p);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
replaced = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (lp != null)
|
|
|
|
if (lp != null)
|
|
|
|