From 492e3b40b14749cddaebe7ad96909556a0e611c3 Mon Sep 17 00:00:00 2001 From: Saket Date: Sun, 17 Jan 2016 15:05:16 +0530 Subject: [PATCH 1/4] Temporarily bump targetSdk, compileSdk and buildTools version --- gradle.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 62187015..11cc70fd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,9 +22,9 @@ VERSION_CODE=8 GROUP=com.splitwise ANDROID_BUILD_MIN_SDK_VERSION=14 -ANDROID_BUILD_TARGET_SDK_VERSION=21 -ANDROID_BUILD_SDK_VERSION=21 -ANDROID_BUILD_TOOLS_VERSION=21.1.2 +ANDROID_BUILD_TARGET_SDK_VERSION=22 +ANDROID_BUILD_SDK_VERSION=23 +ANDROID_BUILD_TOOLS_VERSION=23.0.2 POM_DESCRIPTION=Android Token AutoComplete EditText POM_URL=https://github.com/splitwise/TokenAutoComplete From f8898da3e6f906ea9b84ac3c2fc6fb3d3e4bdf71 Mon Sep 17 00:00:00 2001 From: Saket Date: Sun, 17 Jan 2016 15:05:50 +0530 Subject: [PATCH 2/4] Set long pressable so that the context menu can show up --- .../main/java/com/tokenautocomplete/TokenCompleteTextView.java | 1 - 1 file changed, 1 deletion(-) diff --git a/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java b/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java index 475b3a03..fdd9cf61 100644 --- a/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java +++ b/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java @@ -146,7 +146,6 @@ private void init() { addListeners(); setTextIsSelectable(false); - setLongClickable(false); //In theory, get the soft keyboard to not supply suggestions. very unreliable < API 11 setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE); From 6317aee01c5ef0afa72387ab1a1dc315616d588a Mon Sep 17 00:00:00 2001 From: Saket Date: Sun, 17 Jan 2016 15:06:15 +0530 Subject: [PATCH 3/4] Re-check for duplicates when a span is added (Android re-inserts token spans when they're copied or cut, leading to duplicate items) --- .../com/tokenautocomplete/TokenCompleteTextView.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java b/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java index fdd9cf61..557a8879 100644 --- a/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java +++ b/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java @@ -1123,11 +1123,12 @@ private class TokenSpanWatcher implements SpanWatcher { @Override public void onSpanAdded(Spannable text, Object what, int start, int end) { if (what instanceof TokenCompleteTextView.TokenImageSpan && !savingState && !focusChanging) { - TokenImageSpan token = (TokenImageSpan) what; - objects.add(token.getToken()); - - if (listener != null) - listener.onTokenAdded(token.getToken()); + TokenImageSpan tokenSpan = (TokenImageSpan)what; + final T token = tokenSpan.getToken(); + if (allowDuplicates || !objects.contains(token)) { + objects.add(token); + if (listener != null) listener.onTokenAdded(token); + } } } From f4d0e5a5df74f4e236044f6c8be06dc470015e45 Mon Sep 17 00:00:00 2001 From: Saket Date: Sun, 17 Jan 2016 15:17:42 +0530 Subject: [PATCH 4/4] Add reason for re-checking for duplicates in TokenSpanWatcher.onSpanAdded --- .../main/java/com/tokenautocomplete/TokenCompleteTextView.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java b/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java index 557a8879..91402e55 100644 --- a/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java +++ b/library/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java @@ -1125,6 +1125,9 @@ public void onSpanAdded(Spannable text, Object what, int start, int end) { if (what instanceof TokenCompleteTextView.TokenImageSpan && !savingState && !focusChanging) { TokenImageSpan tokenSpan = (TokenImageSpan)what; final T token = tokenSpan.getToken(); + + // Android reinserts the spans under selection when the user + // cuts or copies some text from the context menu if (allowDuplicates || !objects.contains(token)) { objects.add(token); if (listener != null) listener.onTokenAdded(token);