diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index ae44677..17d9a78 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -87,6 +87,7 @@
     private int mMotionDownRawY;
     private int mScrollHandleTop;
     private long mTouchTime;
+    private boolean mZoomSwipeInProgress;
 
     static class Defines {
         private static float farSize(float sizeAt0) {
@@ -236,16 +237,17 @@
             break;
         case MotionEvent.ACTION_UP:
         case MotionEvent.ACTION_CANCEL:
+            if (!mZoomSwipeInProgress) {
+                mRollo.mState.newPositionX = ev.getRawX() / Defines.SCREEN_WIDTH_PX;
+                mRollo.mState.newTouchDown = 0;
 
-            mRollo.mState.newPositionX = ev.getRawX() / Defines.SCREEN_WIDTH_PX;
-            mRollo.mState.newTouchDown = 0;
-
-            mVelocity.computeCurrentVelocity(1000 /* px/sec */,
-                    mConfig.getScaledMaximumFlingVelocity());
-            mRollo.mState.flingVelocityX = mVelocity.getXVelocity() / Defines.SCREEN_WIDTH_PX;
-            mRollo.clearSelectedIcon();
-            mRollo.mState.save();
-            mRollo.mInvokeFling.execute();
+                mVelocity.computeCurrentVelocity(1000 /* px/sec */,
+                        mConfig.getScaledMaximumFlingVelocity());
+                mRollo.mState.flingVelocityX = mVelocity.getXVelocity() / Defines.SCREEN_WIDTH_PX;
+                mRollo.clearSelectedIcon();
+                mRollo.mState.save();
+                mRollo.mInvokeFling.execute();
+            }
             mLastMotionX = -10000;
             mVelocity.recycle();
             mVelocity = null;
@@ -297,6 +299,15 @@
     public void onDropCompleted(View target, boolean success) {
     }
 
+    public void setZoomSwipeInProgress(boolean swiping, boolean touchStillDown) {
+        mZoomSwipeInProgress = swiping;
+        if (!touchStillDown) {
+            mRollo.mState.newTouchDown = 0;
+            mRollo.mState.save();
+            mRollo.mInvokeTouchUp.execute();
+        }
+    }
+
     public void setZoomTarget(float amount) {
         zoom(amount, true);
     }
@@ -403,6 +414,7 @@
         private Script.Invokable mInvokeFling;
         private Script.Invokable mInvokeSetZoomTarget;
         private Script.Invokable mInvokeSetZoom;
+        private Script.Invokable mInvokeTouchUp;
 
         private Sampler mSampler;
         private Sampler mSamplerText;
@@ -631,6 +643,7 @@
             mInvokeFling = sb.addInvokable("fling");
             mInvokeSetZoomTarget = sb.addInvokable("setZoomTarget");
             mInvokeSetZoom = sb.addInvokable("setZoom");
+            mInvokeTouchUp = sb.addInvokable("touchUp");
             mScript = sb.create();
             mScript.setClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 
diff --git a/src/com/android/launcher2/SwipeController.java b/src/com/android/launcher2/SwipeController.java
index 7617fe0..a900fca 100644
--- a/src/com/android/launcher2/SwipeController.java
+++ b/src/com/android/launcher2/SwipeController.java
@@ -125,6 +125,7 @@
             mTracking = false;
             mDownX = screenX;
             mDownY = screenY;
+            mAllAppsView.setZoomSwipeInProgress(true, true);
             break;
 
         case MotionEvent.ACTION_MOVE:
@@ -132,6 +133,7 @@
                 if (Math.abs(deltaX) > mSlop) {
                     mCanceled = true;
                     mTracking = false;
+                    mAllAppsView.setZoomSwipeInProgress(false, true);
                 }
                 if (Math.abs(deltaY) > mSlop) {
                     mTracking = true;
@@ -146,6 +148,7 @@
         case MotionEvent.ACTION_UP:
             if (mTracking && !mCanceled) {
                 fling(screenY);
+                mAllAppsView.setZoomSwipeInProgress(false, false);
             }
             mVelocityTracker.recycle();
             mVelocityTracker = null;
