Merge "Allow TouchControllers to override shouldDisableGestures" into ub-launcher3-qt-r1-dev

This commit is contained in:
Tony Wickham
2019-07-18 22:27:54 +00:00
committed by Android (Google) Code Review
3 changed files with 15 additions and 5 deletions

View File

@@ -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;
}
}

View File

@@ -32,5 +32,9 @@ public interface TouchController {
*/
boolean onControllerInterceptTouchEvent(MotionEvent ev);
default boolean allowWhenGesturesDisabled() {
return false;
}
default void dump(String prefix, PrintWriter writer) { }
}

View File

@@ -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<T extends Context & ActivityContext>
}
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;
}
}