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);
