From f33b6d4378c6029265742bdc19d805b73b096ffa Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Thu, 18 Jul 2019 14:38:46 -0700 Subject: [PATCH] Allow TouchControllers to override shouldDisableGestures Currently only StatusBarTouchController overrides this to always return false, so that you can swipe down for notifications during transition to home screen from an app (in gesture nav). Bug: 137161198 Change-Id: I803c37937d5294810cbe0c1bbffcd5dddcc5ca3b --- .../touchcontrollers/StatusBarTouchController.java | 6 ++++++ src/com/android/launcher3/util/TouchController.java | 4 ++++ src/com/android/launcher3/views/BaseDragLayer.java | 10 +++++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java index f5ba3725df..18996ddb03 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 @@ public class StatusBarTouchController implements TouchController { 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 fc1d819f78..2cd28bbe8d 100644 --- a/src/com/android/launcher3/util/TouchController.java +++ b/src/com/android/launcher3/util/TouchController.java @@ -32,5 +32,9 @@ public interface TouchController { */ 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 8bf33bf05c..4fe3d99d1e 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_DOWN; 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.Rect; 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 @@ public abstract class BaseDragLayer } 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; } }