Cancelling long press on workspace if touch point moves a lot

Bug: 113695336
Change-Id: I9a2e5972b6718b31cffd88be218fe5744c702827
diff --git a/src/com/android/launcher3/touch/WorkspaceTouchListener.java b/src/com/android/launcher3/touch/WorkspaceTouchListener.java
index 6688927..4de082e 100644
--- a/src/com/android/launcher3/touch/WorkspaceTouchListener.java
+++ b/src/com/android/launcher3/touch/WorkspaceTouchListener.java
@@ -17,6 +17,7 @@
 
 import static android.view.MotionEvent.ACTION_CANCEL;
 import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_MOVE;
 import static android.view.MotionEvent.ACTION_POINTER_UP;
 import static android.view.MotionEvent.ACTION_UP;
 import static android.view.ViewConfiguration.getLongPressTimeout;
@@ -29,6 +30,7 @@
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnTouchListener;
+import android.view.ViewConfiguration;
 
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.CellLayout;
@@ -60,12 +62,16 @@
     private final Launcher mLauncher;
     private final Workspace mWorkspace;
     private final PointF mTouchDownPoint = new PointF();
+    private final float mTouchSlop;
 
     private int mLongPressState = STATE_CANCELLED;
 
     public WorkspaceTouchListener(Launcher launcher, Workspace workspace) {
         mLauncher = launcher;
         mWorkspace = workspace;
+        // Use twice the touch slop as we are looking for long press which is more
+        // likely to cause movement.
+        mTouchSlop = 2 * ViewConfiguration.get(launcher).getScaledTouchSlop();
     }
 
     @Override
@@ -116,6 +122,9 @@
             mWorkspace.onTouchEvent(ev);
             if (mWorkspace.isHandlingTouch()) {
                 cancelLongPress();
+            } else if (action == ACTION_MOVE && PointF.length(
+                    mTouchDownPoint.x - ev.getX(), mTouchDownPoint.y - ev.getY()) > mTouchSlop) {
+                cancelLongPress();
             }
 
             result = true;