From 778d661419c4ea9e063919a134beb63da21392aa Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 23 Feb 2022 15:03:24 +0100 Subject: [PATCH] Chip address separators --- .../faircode/email/EditTextMultiAutoComplete.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java b/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java index 06f4f21ebb..967bc123f4 100644 --- a/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java +++ b/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java @@ -179,7 +179,6 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie try { final Context context = getContext(); final Editable edit = getText(); - final int len = edit.length(); final boolean send_chips = prefs.getBoolean("send_chips", !BuildConfig.PLAY_STORE_RELEASE); final boolean focus = hasFocus(); @@ -188,13 +187,13 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie boolean added = false; List tbd = new ArrayList<>(); - tbd.addAll(Arrays.asList(edit.getSpans(0, len, ClipImageSpan.class))); + tbd.addAll(Arrays.asList(edit.getSpans(0, edit.length(), ClipImageSpan.class))); if (send_chips) { int start = 0; boolean space = true; boolean quote = false; - for (int i = 0; i < len; i++) { + for (int i = 0; i < edit.length(); i++) { char kar = edit.charAt(i); if (space && kar == ' ') { @@ -205,7 +204,7 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie if (kar == '"') quote = !quote; - else if (!quote && (kar == ',' || (!focus && i + 1 == len))) { + else if (!quote && (kar == ',' || (!focus && i + 1 == edit.length()))) { boolean found = false; for (ClipImageSpan span : new ArrayList<>(tbd)) { int s = edit.getSpanStart(span); @@ -232,7 +231,9 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie } if (parsed != null && parsed.length == 1) { - if (kar != ',') + if (kar == ' ') + edit.insert(i++, ","); + else if (kar != ',') edit.insert(++i, ","); Drawable avatar = null; @@ -259,7 +260,8 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie ClipImageSpan is = new ClipImageSpan(cd); edit.setSpan(is, start, i + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - if (i + 1 == len || edit.charAt(i + 1) != ' ') + if (kar == ',' && + (i + 1 == edit.length() || edit.charAt(i + 1) != ' ')) edit.insert(++i, " "); added = true; }