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() {