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

Commit 06ca7568 authored by Hyunyoung Song's avatar Hyunyoung Song
Browse files

Cancel exit spring loaded runnable when launcher state is set to APPS or WIDGETS

b/29645452

By cancelling the runnable, we are enabling transition:
state1 -> state3 instead of state1-> state2-> state3.
Transition state1->state3 is a viable transition that is
supported by our model.

        Launcher           Workspace
--------------------------------------------
state1  APPS_SPRING_LOADED SPRING_LOADED
state2  WORKSPACE          NORMAL
state3  APPS               NORMAL_HIDDEN


Change-Id: If27905567efe439324494e0091a4b42fcbf01448
parent 7da6d00c
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -348,6 +348,11 @@ public class Launcher extends Activity
        }
    }

    // Exiting spring loaded mode happens with a delay. This runnable object triggers the
    // state transition. If another state transition happened during this delay,
    // simply unregister this runnable.
    private Runnable mExitSpringLoadedModeRunnable;

    @Thunk Runnable mBuildLayersRunnable = new Runnable() {
        public void run() {
            if (mWorkspace != null) {
@@ -3413,6 +3418,12 @@ public class Launcher extends Activity
            return false;
        }

        // This is a safe and supported transition to bypass spring_loaded mode.
        if (mExitSpringLoadedModeRunnable != null) {
            mHandler.removeCallbacks(mExitSpringLoadedModeRunnable);
            mExitSpringLoadedModeRunnable = null;
        }

        if (toState == State.APPS) {
            mStateTransitionAnimation.startAnimationToAllApps(mWorkspace.getState(), animated,
                    focusSearchBar);
@@ -3472,7 +3483,10 @@ public class Launcher extends Activity
            final Runnable onCompleteRunnable) {
        if (!isStateSpringLoaded()) return;

        mHandler.postDelayed(new Runnable() {
        if (mExitSpringLoadedModeRunnable != null) {
            mHandler.removeCallbacks(mExitSpringLoadedModeRunnable);
        }
        mExitSpringLoadedModeRunnable = new Runnable() {
            @Override
            public void run() {
                if (successfulDrop) {
@@ -3486,8 +3500,10 @@ public class Launcher extends Activity
                } else {
                    exitSpringLoadedDragMode();
                }
                mExitSpringLoadedModeRunnable = null;
            }
        }, delay);
        };
        mHandler.postDelayed(mExitSpringLoadedModeRunnable, delay);
    }

    boolean isStateSpringLoaded() {