From 0b8c5fa5c7474cafd0d640eb59bcd84dd701b3f1 Mon Sep 17 00:00:00 2001 From: Andreas Agvard Date: Tue, 29 Aug 2023 18:56:39 +0200 Subject: [PATCH] Fixes search feature invocation issue Fixes: 297866704 Flag: N/A Test: Manual Change-Id: I9647504e6c6999ce7aa17ab4acfc65d522dcd2af --- .../NavHandleLongPressHandler.java | 17 +++++++++++------ .../NavHandleLongPressInputConsumer.java | 9 ++++++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressHandler.java b/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressHandler.java index 5c5b9ca785..7a2b3430ee 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressHandler.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressHandler.java @@ -18,6 +18,8 @@ package com.android.quickstep.inputconsumers; import android.content.Context; +import androidx.annotation.Nullable; + import com.android.launcher3.R; import com.android.launcher3.util.ResourceBasedOverride; @@ -33,12 +35,15 @@ public class NavHandleLongPressHandler implements ResourceBasedOverride { } /** - * Called when nav handle is long pressed. - * - * @return if the long press was consumed, meaning other input consumers should receive a - * cancel event + * Called when nav handle is long pressed to get the Runnable that should be executed by the + * caller to invoke long press behavior. If null is returned that means long press couldn't be + * handled. + *

+ * A Runnable is returned here to ensure the InputConsumer can call + * {@link android.view.InputMonitor#pilferPointers()} before invoking the long press behavior + * since pilfering can break the long press behavior. */ - public boolean onLongPress() { - return false; + public @Nullable Runnable getLongPressRunnable() { + return null; } } diff --git a/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java index 542dea1699..a9accb7bf7 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java @@ -38,8 +38,8 @@ public class NavHandleLongPressInputConsumer extends DelegateInputConsumer { public NavHandleLongPressInputConsumer(Context context, InputConsumer delegate, InputMonitorCompat inputMonitor) { super(delegate, inputMonitor); - mNavHandleWidth = context.getResources() - .getDimensionPixelSize(R.dimen.navigation_home_handle_width); + mNavHandleWidth = context.getResources().getDimensionPixelSize( + R.dimen.navigation_home_handle_width); mScreenWidth = DisplayController.INSTANCE.get(context).getInfo().currentSize.x; mNavHandleLongPressHandler = NavHandleLongPressHandler.newInstance(context); @@ -48,8 +48,11 @@ public class NavHandleLongPressInputConsumer extends DelegateInputConsumer { @Override public void onLongPress(MotionEvent motionEvent) { if (isInArea(motionEvent.getRawX())) { - if (mNavHandleLongPressHandler.onLongPress()) { + Runnable longPressRunnable = mNavHandleLongPressHandler.getLongPressRunnable(); + if (longPressRunnable != null) { setActive(motionEvent); + + longPressRunnable.run(); } } }