Handle long press directly if recents transition is deferred

- For 3p launchers, the starting of the home activity is deferred until
  the user moves past a slop, in these cases we don't need to worry
  about finishing the recents transition before handling long press
  (since it was never started)

Fixes: 307254136
Test: Enable 3p launcher and invoke omni
Change-Id: I0aed7e7d442e010c38979e3f806f6cf0eb33cfe8
This commit is contained in:
Winson Chung
2023-11-02 22:46:23 +00:00
parent 8a01ea889f
commit 9b97217ffb
2 changed files with 9 additions and 1 deletions
@@ -114,7 +114,7 @@ public class NavHandleLongPressInputConsumer extends DelegateInputConsumer {
if (longPressRunnable != null) {
OtherActivityInputConsumer oaic = getInputConsumerOfClass(
OtherActivityInputConsumer.class);
if (oaic != null) {
if (oaic != null && oaic.hasStartedTouchTracking()) {
oaic.setForceFinishRecentsTransitionCallback(longPressRunnable);
setActive(mCurrentDownEvent);
} else {
@@ -412,6 +412,14 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
}
}
/**
* Returns whether this input consumer has started touch tracking (if touch tracking is not
* deferred).
*/
public boolean hasStartedTouchTracking() {
return mInteractionHandler != null;
}
/**
* Called when the gesture has ended. Does not correlate to the completion of the interaction as
* the animation can still be running.