Merge "Prevent multiple swipes at one time" into klp-dev
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index c7c8ae8..88520dd 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -89,6 +89,8 @@
     /** Position of the contact pending removal. */
     private int mPotentialRemoveEntryIndex = -1;
 
+    private boolean mAwaitingRemove = false;
+
     private ContactPhotoManager mPhotoManager;
     protected int mNumFrequents;
     protected int mNumStarred;
@@ -305,6 +307,8 @@
             mContactEntries.add(contact);
         }
 
+        mAwaitingRemove = false;
+
         arrangeContactsByPinnedPosition(mContactEntries);
 
         notifyDataSetChanged();
@@ -636,6 +640,7 @@
             unstarAndUnpinContact(entry.lookupKey);
             notifyDataSetChanged();
             removed = true;
+            mAwaitingRemove = true;
         }
         cleanTempVariables();
         return removed;
@@ -1000,7 +1005,7 @@
 
         @Override
         public boolean onInterceptTouchEvent(MotionEvent ev) {
-            if (mSwipeHelper != null) {
+            if (mSwipeHelper != null && isSwipeEnabled()) {
                 return mSwipeHelper.onInterceptTouchEvent(ev) || super.onInterceptTouchEvent(ev);
             } else {
                 return super.onInterceptTouchEvent(ev);
@@ -1009,7 +1014,7 @@
 
         @Override
         public boolean onTouchEvent(MotionEvent ev) {
-            if (mSwipeHelper != null) {
+            if (mSwipeHelper != null && isSwipeEnabled()) {
                 return mSwipeHelper.onTouchEvent(ev) || super.onTouchEvent(ev);
             } else {
                 return super.onTouchEvent(ev);
@@ -1166,5 +1171,11 @@
     @Override
     public void onTouch() {
         removePendingContactEntry();
+        return;
+    }
+
+    @Override
+    public boolean isSwipeEnabled() {
+        return !mAwaitingRemove;
     }
 }
diff --git a/src/com/android/dialer/list/SwipeHelper.java b/src/com/android/dialer/list/SwipeHelper.java
index 3bcad2d..f493c9d 100644
--- a/src/com/android/dialer/list/SwipeHelper.java
+++ b/src/com/android/dialer/list/SwipeHelper.java
@@ -465,5 +465,7 @@
         public void onSwipe(View view);
 
         public void onTouch();
+
+        public boolean isSwipeEnabled();
     }
 }
\ No newline at end of file
diff --git a/src/com/android/dialer/list/SwipeableListView.java b/src/com/android/dialer/list/SwipeableListView.java
index 504b140..29c4f67 100644
--- a/src/com/android/dialer/list/SwipeableListView.java
+++ b/src/com/android/dialer/list/SwipeableListView.java
@@ -76,7 +76,7 @@
     }
 
     public boolean isSwipeEnabled() {
-        return mEnableSwipe;
+        return mEnableSwipe && mOnItemGestureListener.isSwipeEnabled();
     }
 
     public void setOnItemSwipeListener(OnItemGestureListener listener) {
@@ -85,7 +85,7 @@
 
     @Override
     public boolean onInterceptTouchEvent(MotionEvent ev) {
-        if (mEnableSwipe) {
+        if (isSwipeEnabled()) {
             return mSwipeHelper.onInterceptTouchEvent(ev) || super.onInterceptTouchEvent(ev);
         } else {
             return super.onInterceptTouchEvent(ev);
@@ -97,7 +97,7 @@
         if (mOnItemGestureListener != null) {
             mOnItemGestureListener.onTouch();
         }
-        if (mEnableSwipe) {
+        if (isSwipeEnabled()) {
             return mSwipeHelper.onTouchEvent(ev) || super.onTouchEvent(ev);
         } else {
             return super.onTouchEvent(ev);