Hide the cursor when the user has selected a chip.
Also fix issue where the correct span was not being removed.
Unselect the chip AFTER it has been swapped for a new chip or an empty span.
Change-Id: I312492ff1fbb60cb416c3ba703e7f7c76247d75e
diff --git a/src/com/android/ex/chips/RecipientEditTextViewInner.java b/src/com/android/ex/chips/RecipientEditTextViewInner.java
index df5023f..1e22a82 100644
--- a/src/com/android/ex/chips/RecipientEditTextViewInner.java
+++ b/src/com/android/ex/chips/RecipientEditTextViewInner.java
@@ -314,6 +314,7 @@
mSelectedChip.unselectChip();
mSelectedChip = null;
}
+ setCursorVisible(true);
}
@Override
@@ -332,8 +333,10 @@
if (mSelectedChip != null && mSelectedChip != currentChip) {
clearSelectedChip();
mSelectedChip = currentChip.selectChip();
+ setCursorVisible(false);
} else if (mSelectedChip == null) {
mSelectedChip = currentChip.selectChip();
+ setCursorVisible(false);
} else {
mSelectedChip.onClick(this, offset, x, y);
}
@@ -503,7 +506,9 @@
public void unselectChip() {
if (getChipStart() == -1 || getChipEnd() == -1) {
- mSelectedChip = null;
+ if (mSelectedChip == this) {
+ mSelectedChip = null;
+ }
return;
}
clearComposingText();
@@ -548,20 +553,20 @@
Spannable spannable = getSpannable();
int spanStart = getChipStart();
int spanEnd = getChipEnd();
- if (this == mSelectedChip) {
- mSelectedChip = null;
- }
Editable text = getText();
int toDelete = spanEnd;
// Always remove trailing spaces when removing a chip.
while (toDelete < text.length() - 1 && text.charAt(toDelete) == ' ') {
toDelete++;
}
- QwertyKeyListener.markAsReplaced(getText(), spanStart, spanEnd, "");
+ QwertyKeyListener.markAsReplaced(getText(), spanStart, toDelete, "");
spannable.removeSpan(this);
- mRecipients.remove(this);
- spannable.setSpan(null, spanStart, spanEnd, 0);
text.delete(spanStart, toDelete);
+ mRecipients.remove(this);
+ if (this == mSelectedChip) {
+ mSelectedChip = null;
+ clearSelectedChip();
+ }
}
public int getChipStart() {