am 18eefa52: Merge "Auto dismiss popups when touches happen outside the popup window" into ub-chips-cranbrook

* commit '18eefa523611ccd2165e6d79621f50ed038bb45d':
  Auto dismiss popups when touches happen outside the popup window
diff --git a/src/com/android/ex/chips/RecipientEditTextView.java b/src/com/android/ex/chips/RecipientEditTextView.java
index c05da59..f470264 100644
--- a/src/com/android/ex/chips/RecipientEditTextView.java
+++ b/src/com/android/ex/chips/RecipientEditTextView.java
@@ -86,6 +86,7 @@
 import android.widget.ListPopupWindow;
 import android.widget.ListView;
 import android.widget.MultiAutoCompleteTextView;
+import android.widget.PopupWindow;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
@@ -266,9 +267,9 @@
             sSelectedTextColor = context.getResources().getColor(android.R.color.white);
         }
         mAlternatesPopup = new ListPopupWindow(context);
-        mAlternatesPopup.setBackgroundDrawable(null);
+        setupPopupWindow(mAlternatesPopup);
         mAddressPopup = new ListPopupWindow(context);
-        mAddressPopup.setBackgroundDrawable(null);
+        setupPopupWindow(mAddressPopup);
         mCopyDialog = new Dialog(context);
         mAlternatesListener = new OnItemClickListener() {
             @Override
@@ -304,6 +305,16 @@
         setDropdownChipLayouter(new DropdownChipLayouter(LayoutInflater.from(context), context));
     }
 
+    private void setupPopupWindow(ListPopupWindow popup) {
+        popup.setModal(true);
+        popup.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                clearSelectedChip();
+            }
+        });
+    }
+
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         super.onLayout(changed, left, top, right, bottom);