diff options
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 78e0aa0c1..691136019 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -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() { |