Merge "Improving TAPL code around fallback recents" into ub-launcher3-qt-r1-dev
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
index f5ba372..18996dd 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
@@ -166,4 +166,10 @@
         mSysUiProxy = RecentsModel.INSTANCE.get(mLauncher).getSystemUiProxy();
         return mSysUiProxy != null;
     }
+
+    @Override
+    public boolean allowWhenGesturesDisabled() {
+        // Always allow intercepting touches for this controller.
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/src/com/android/launcher3/util/TouchController.java b/src/com/android/launcher3/util/TouchController.java
index fc1d819..2cd28bb 100644
--- a/src/com/android/launcher3/util/TouchController.java
+++ b/src/com/android/launcher3/util/TouchController.java
@@ -32,5 +32,9 @@
      */
     boolean onControllerInterceptTouchEvent(MotionEvent ev);
 
+    default boolean allowWhenGesturesDisabled() {
+        return false;
+    }
+
     default void dump(String prefix, PrintWriter writer) { }
 }
diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java
index 594a246..7b16409 100644
--- a/src/com/android/launcher3/views/BaseDragLayer.java
+++ b/src/com/android/launcher3/views/BaseDragLayer.java
@@ -21,7 +21,6 @@
 import static android.view.MotionEvent.ACTION_UP;
 
 import static com.android.launcher3.Utilities.SINGLE_FRAME_MS;
-import static com.android.launcher3.Utilities.shouldDisableGestures;
 
 import android.annotation.TargetApi;
 import android.content.Context;
@@ -30,7 +29,6 @@
 import android.graphics.RectF;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.util.Property;
 import android.view.MotionEvent;
 import android.view.View;
@@ -152,15 +150,17 @@
     }
 
     private TouchController findControllerToHandleTouch(MotionEvent ev) {
-        if (shouldDisableGestures(ev)) return null;
+        boolean gesturesEnabled = !Utilities.shouldDisableGestures(ev);
 
         AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mActivity);
-        if (topView != null && topView.onControllerInterceptTouchEvent(ev)) {
+        if (topView != null && (gesturesEnabled || topView.allowWhenGesturesDisabled())
+                && topView.onControllerInterceptTouchEvent(ev)) {
             return topView;
         }
 
         for (TouchController controller : mControllers) {
-            if (controller.onControllerInterceptTouchEvent(ev)) {
+            if ((gesturesEnabled || controller.allowWhenGesturesDisabled())
+                    && controller.onControllerInterceptTouchEvent(ev)) {
                 return controller;
             }
         }