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

Commit 3f3cc3e9 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Enable edge back gesture on app launch

We don't clear state on EdgeBackGestureHandler
when we go to Recents or Home.
A more robust solution is in the works with
WM team and will probably be built on top of this.
Needs ag/11273364 to work.

Bug: 154580671
Test: Launch app directly in landscape,
should be able to swipe home on first try.

Change-Id: Ia4c685e16645d0237f278a611f6c61f252f3b79c
parent 2f04a9d2
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ class OrientationTouchTransformer {
    private static final boolean DEBUG = false;
    private static final int MAX_ORIENTATIONS = 4;

    private static final int QUICKSTEP_ROTATION_UNINITIALIZED = -1;

    private final Matrix mTmpMatrix = new Matrix();
    private final float[] mTmpPoint = new float[2];

@@ -69,9 +71,10 @@ class OrientationTouchTransformer {
    private QuickStepContractInfo mContractInfo;

    /**
     * Represents if we're currently in a swipe "session" of sorts. If value is -1, then user
     * has not tapped on an active nav region. Otherwise it will be the rotation of the display
     * when the user first interacted with the active nav bar region.
     * Represents if we're currently in a swipe "session" of sorts. If value is
     * QUICKSTEP_ROTATION_UNINITIALIZED, then user has not tapped on an active nav region.
     * Otherwise it will be the rotation of the display when the user first interacted with the
     * active nav bar region.
     * The "session" ends when {@link #enableMultipleRegions(boolean, DefaultDisplay.Info)} is
     * called - usually from a timeout or if user starts interacting w/ the foreground app.
     *
@@ -79,7 +82,7 @@ class OrientationTouchTransformer {
     * the rect is purely used for tracking touch interactions and usually this "session" will
     * outlast the touch interaction.
     */
    private int mQuickStepStartingRotation = -1;
    private int mQuickStepStartingRotation = QUICKSTEP_ROTATION_UNINITIALIZED;

    /** For testability */
    interface QuickStepContractInfo {
@@ -116,7 +119,7 @@ class OrientationTouchTransformer {
     */
    void createOrAddTouchRegion(DefaultDisplay.Info info) {
        mCurrentDisplayRotation = info.rotation;
        if (mQuickStepStartingRotation > -1
        if (mQuickStepStartingRotation > QUICKSTEP_ROTATION_UNINITIALIZED
                && mCurrentDisplayRotation == mQuickStepStartingRotation) {
            // User already was swiping and the current screen is same rotation as the starting one
            // Remove active nav bars in other rotations except for the one we started out in
@@ -146,7 +149,7 @@ class OrientationTouchTransformer {
        mEnableMultipleRegions = enableMultipleRegions &&
                mMode != SysUINavigationMode.Mode.TWO_BUTTONS;
        if (!enableMultipleRegions) {
            mQuickStepStartingRotation = -1;
            mQuickStepStartingRotation = QUICKSTEP_ROTATION_UNINITIALIZED;
            resetSwipeRegions(info);
        }
    }
+6 −8
Original line number Diff line number Diff line
@@ -511,7 +511,6 @@ public class RecentsAnimationDeviceState implements

    void enableMultipleRegions(boolean enable) {
        mOrientationTouchTransformer.enableMultipleRegions(enable, mDefaultDisplay.getInfo());
        if (enable) {
        UI_HELPER_EXECUTOR.execute(() -> {
            int quickStepStartingRotation =
                    mOrientationTouchTransformer.getQuickStepStartingRotation();
@@ -519,7 +518,6 @@ public class RecentsAnimationDeviceState implements
                    .onQuickSwitchToNewTask(quickStepStartingRotation);
        });
    }
    }

    public int getCurrentActiveRotation() {
        return mOrientationTouchTransformer.getCurrentActiveRotation();