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

Commit dfc22b8f authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Fixing recents command not working properly in gesture mode

Bug: 185445289
Test: Manual
Change-Id: I233ee493ea0d42bbfca14b17e921d907cc65da53
parent c874ccc1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -621,7 +621,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        final boolean passed = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW;
        if (passed != mPassedOverviewThreshold) {
            mPassedOverviewThreshold = passed;
            if (mDeviceState.isTwoButtonNavMode()) {
            if (mDeviceState.isTwoButtonNavMode() && !mGestureState.isHandlingAtomicEvent()) {
                performHapticFeedback();
            }
        }
@@ -854,7 +854,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,

    private GestureEndTarget calculateEndTarget(PointF velocity, float endVelocity, boolean isFling,
            boolean isCancel) {
        if (mDeviceState.isButtonNavMode()) {
        if (mGestureState.isHandlingAtomicEvent()) {
            // Button mode, this is only used to go to recents
            return RECENTS;
        }
@@ -976,7 +976,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                    mRecentsView.snapToPage(mRecentsView.getNextPage(), (int) MAX_SWIPE_DURATION);
                    isScrolling = true;
                }
                if (!mDeviceState.isButtonNavMode() || isScrolling) {
                if (!mGestureState.isHandlingAtomicEvent() || isScrolling) {
                    duration = Math.max(duration, mRecentsView.getScroller().getDuration());
                }
            }
+18 −0
Original line number Diff line number Diff line
@@ -146,6 +146,8 @@ public class GestureState implements RecentsAnimationCallbacks.RecentsAnimationL
    /** The time when the swipe up gesture is triggered. */
    private long mSwipeUpStartTimeMs;

    private boolean mHandlingAtomicEvent;

    public GestureState(OverviewComponentObserver componentObserver, int gestureId) {
        mHomeIntent = componentObserver.getHomeIntent();
        mOverviewIntent = componentObserver.getOverviewIntent();
@@ -314,6 +316,22 @@ public class GestureState implements RecentsAnimationCallbacks.RecentsAnimationL
        }
    }

    /**
     * Indicates if the gesture is handling an atomic event like a click and not a
     * user controlled gesture.
     */
    public void setHandlingAtomicEvent(boolean handlingAtomicEvent) {
        mHandlingAtomicEvent = true;
    }

    /**
     * Returns true if the gesture is handling an atomic event like a click and not a
     * user controlled gesture.
     */
    public boolean isHandlingAtomicEvent() {
        return mHandlingAtomicEvent;
    }

    /**
     * @return whether the current gesture is still running a recents animation to a state in the
     *         Launcher or Recents activity.
+1 −0
Original line number Diff line number Diff line
@@ -179,6 +179,7 @@ public class OverviewCommandHelper {
        }

        GestureState gestureState = mService.createGestureState(GestureState.DEFAULT_STATE);
        gestureState.setHandlingAtomicEvent(true);
        AbsSwipeUpHandler interactionHandler = mService.getSwipeUpHandlerFactory()
                .newHandler(gestureState, cmd.createTime);
        interactionHandler.setGestureEndCallback(