Fixing some touch / interaction problems

-> Weird reorder/scroll mode hybrid (issue 10550801)
-> Entering overview mode when we shouldn't (issue 10855389)

Change-Id: Ic936ead8deb3a5d4e00f265d09329528a1517063
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 8f0fdde..5bb4f75 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2557,11 +2557,14 @@
 
         if (v instanceof Workspace) {
             if (!mWorkspace.isInOverviewMode()) {
-                mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
-                        HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
-                mWorkspace.enterOverviewMode();
+                if (mWorkspace.enterOverviewMode()) {
+                    mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
+                            HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
+                    return true;
+                } else {
+                    return false;
+                }
             }
-            return true;
         }
 
         if (!(v instanceof CellLayout)) {
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 1ae2943..42f3cac 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -1316,13 +1316,13 @@
                  */
                 if (mActivePointerId != INVALID_POINTER) {
                     determineScrollingStart(ev);
-                    break;
                 }
                 // if mActivePointerId is INVALID_POINTER, then we must have missed an ACTION_DOWN
                 // event. in that case, treat the first occurence of a move event as a ACTION_DOWN
                 // i.e. fall through to the next case (don't break)
                 // (We sometimes miss ACTION_DOWN events in Workspace because it ignores all events
                 // while it's small- this was causing a crash before we checked for INVALID_POINTER)
+                break;
             }
 
             case MotionEvent.ACTION_DOWN: {
@@ -2373,7 +2373,10 @@
     }
 
     public boolean startReordering(View v) {
-        int dragViewIndex = indexOfChild(v);//getPageNearestToCenterOfScreen();
+        int dragViewIndex = indexOfChild(v);
+
+        if (mTouchState != TOUCH_STATE_REST) return false;
+
         mTempVisiblePagesRange[0] = 0;
         mTempVisiblePagesRange[1] = getPageCount() - 1;
         getOverviewModePages(mTempVisiblePagesRange);
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index ada41a0..dcf1069 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1781,9 +1781,13 @@
         return mState == State.OVERVIEW;
     }
 
-    public void enterOverviewMode() {
+    public boolean enterOverviewMode() {
+        if (mTouchState != TOUCH_STATE_REST) {
+            return false;
+        }
         mLauncher.onInteractionBegin();
         enableOverviewMode(true, -1, true);
+        return true;
     }
 
     public void exitOverviewMode(boolean animated) {