Merge "Touch up/cancel over navigation bar will send down event to drag layer" into ub-launcher3-master
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index 6c54262..c555bc6 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -299,17 +299,15 @@
                             mInvalidated = true;
                         }
                         break;
+                    case ACTION_CANCEL:
+                    case ACTION_UP:
+                        startTouchTracking(ev);
+                        break;
                     case ACTION_MOVE: {
                         float displacement = ev.getY() - mDownPos.y;
                         if (Math.abs(displacement) >= mTouchSlop) {
-                            mTarget.getLocationOnScreen(mLocationOnScreen);
-
-                            // Send a down event only when mTouchSlop is crossed.
-                            MotionEvent down = MotionEvent.obtain(ev);
-                            down.setAction(ACTION_DOWN);
-                            sendEvent(down);
-                            down.recycle();
-                            mTrackingStarted = true;
+                            // Start tracking only when mTouchSlop is crossed.
+                            startTouchTracking(ev);
                         }
                     }
                 }
@@ -324,6 +322,18 @@
             }
         }
 
+        private void startTouchTracking(MotionEvent ev) {
+            mTarget.getLocationOnScreen(mLocationOnScreen);
+
+            // Send down touch event
+            MotionEvent down = MotionEvent.obtain(ev);
+            down.setAction(ACTION_DOWN);
+            sendEvent(down);
+            down.recycle();
+
+            mTrackingStarted = true;
+        }
+
         private void sendEvent(MotionEvent ev) {
             int flags = ev.getEdgeFlags();
             ev.setEdgeFlags(flags | EDGE_NAV_BAR);