Skipping resetting transition if the same transition is running
Bug: 73838765
Change-Id: I1a428f1b5d5b04397a317e0f35f3effb53c24405
diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java
index 2f8687d..d5813f3 100644
--- a/src/com/android/launcher3/LauncherStateManager.java
+++ b/src/com/android/launcher3/LauncherStateManager.java
@@ -162,13 +162,26 @@
}
public void goToState(LauncherState state, boolean animated, long delay, long overrideDuration,
- Runnable onCompleteRunnable) {
- if (mLauncher.isInState(state) && mConfig.mCurrentAnimation == null) {
- // Run any queued runnable
- if (onCompleteRunnable != null) {
- onCompleteRunnable.run();
+ final Runnable onCompleteRunnable) {
+ if (mLauncher.isInState(state)) {
+ if (mConfig.mCurrentAnimation == null) {
+ // Run any queued runnable
+ if (onCompleteRunnable != null) {
+ onCompleteRunnable.run();
+ }
+ return;
+ } else if (!mConfig.userControlled && animated) {
+ // We are running the same animation as requested
+ if (onCompleteRunnable != null) {
+ mConfig.mCurrentAnimation.addListener(new AnimationSuccessListener() {
+ @Override
+ public void onAnimationSuccess(Animator animator) {
+ onCompleteRunnable.run();
+ }
+ });
+ }
+ return;
}
- return;
}
// Cancel the current animation