Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2316dc47 authored by Tony Wickham's avatar Tony Wickham
Browse files

Finish recents animation synchronously on cancel event

Fixes: 300247322
Test: invoke omnient via long press nav handle
Flag: ENABLE_LONG_PRESS_NAV_HANDLE

Change-Id: I5d7cd1d0a2a50da26a881a6daa203806bf857909
parent 3c898a75
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -331,7 +331,7 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
     * Finishes the running recents animation.
     * @param forceFinish will synchronously finish the controller
     */
    private void finishRunningRecentsAnimation(boolean toHome, boolean forceFinish) {
    public void finishRunningRecentsAnimation(boolean toHome, boolean forceFinish) {
        if (mController != null) {
            ActiveGestureLog.INSTANCE.addLog(
                    /* event= */ "finishRunningRecentsAnimation", toHome);
+3 −1
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.quickstep.inputconsumers;

import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;

import android.content.Context;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
@@ -52,7 +54,7 @@ public class NavHandleLongPressInputConsumer extends DelegateInputConsumer {
                    if (longPressRunnable != null) {
                        setActive(motionEvent);

                        longPressRunnable.run();
                        MAIN_EXECUTOR.post(longPressRunnable);
                    }
                }
            }
+6 −3
Original line number Diff line number Diff line
@@ -417,8 +417,9 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
    private void finishTouchTracking(MotionEvent ev) {
        TraceHelper.INSTANCE.beginSection(UP_EVT);

        boolean isCanceled = ev.getActionMasked() == ACTION_CANCEL;
        if (mPassedWindowMoveSlop && mInteractionHandler != null) {
            if (ev.getActionMasked() == ACTION_CANCEL) {
            if (isCanceled) {
                mInteractionHandler.onGestureCancelled();
            } else {
                mVelocityTracker.computeCurrentVelocity(PX_PER_MS);
@@ -440,8 +441,10 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
            if (mActiveCallbacks != null && mInteractionHandler != null) {
                if (mTaskAnimationManager.isRecentsAnimationRunning()) {
                    // The animation started, but with no movement, in this case, there will be no
                    // animateToProgress so we have to manually finish here.
                    mTaskAnimationManager.finishRunningRecentsAnimation(false /* toHome */);
                    // animateToProgress so we have to manually finish here. In the case of
                    // ACTION_CANCEL, someone else may be doing something so finish synchronously.
                    mTaskAnimationManager.finishRunningRecentsAnimation(false /* toHome */,
                            isCanceled /* forceFinish */);
                } else {
                    // The animation hasn't started yet, so insert a replacement handler into the
                    // callbacks which immediately finishes the animation after it starts.