diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index b2c29b2d90..b9fda31c4e 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -121,6 +121,7 @@ import java.util.function.Supplier; // If going home, align the icons to hotseat AnimatorSet animatorSet = new AnimatorSet(); + // Update stashed flags first to ensure goingToUnstashedLauncherState() returns correctly. TaskbarStashController stashController = mControllers.taskbarStashController; stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, toState.isTaskbarStashed()); @@ -195,7 +196,8 @@ import java.util.function.Supplier; if (hasAnyFlag(changedFlags, FLAG_RESUMED)) { boolean isResumed = isResumed(); ObjectAnimator anim = mIconAlignmentForResumedState - .animateToValue(isResumed ? 1 : 0) + .animateToValue(isResumed && goingToUnstashedLauncherState() + ? 1 : 0) .setDuration(duration); anim.addListener(new AnimatorListenerAdapter() { @@ -219,7 +221,8 @@ import java.util.function.Supplier; if (hasAnyFlag(changedFlags, FLAG_RECENTS_ANIMATION_RUNNING)) { boolean isRecentsAnimationRunning = isRecentsAnimationRunning(); Animator animator = mIconAlignmentForGestureState - .animateToValue(isRecentsAnimationRunning ? 1 : 0); + .animateToValue(isRecentsAnimationRunning && goingToUnstashedLauncherState() + ? 1 : 0); if (isRecentsAnimationRunning) { animator.setDuration(duration); } @@ -253,6 +256,11 @@ import java.util.function.Supplier; return animatorSet; } + /** Returns whether we're going to a state where taskbar icons should align with launcher. */ + private boolean goingToUnstashedLauncherState() { + return !mControllers.taskbarStashController.isInStashedLauncherState(); + } + private void playStateTransitionAnim(boolean isTransitionStateStashed, AnimatorSet animatorSet, long duration, boolean committed) { TaskbarStashController controller = mControllers.taskbarStashController; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index 8965dc4816..a3ad83504c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -216,6 +216,13 @@ public class TaskbarStashController { return hasAnyFlag(FLAGS_STASHED_IN_APP); } + /** + * Returns whether the taskbar should be stashed in the current LauncherState. + */ + public boolean isInStashedLauncherState() { + return hasAnyFlag(FLAG_IN_STASHED_LAUNCHER_STATE) && supportsVisualStashing(); + } + private boolean hasAnyFlag(int flagMask) { return hasAnyFlag(mState, flagMask); }