From 1e931890d1317b3c35000452b14baf02d4f72e37 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 11 Oct 2023 13:28:08 -0700 Subject: [PATCH] Fix bug where All Apps button loads in late in taskbar. We need to re-create the icon alignment controller if the stash status changes, otherwise it will use an old value. Bug: 296414290 Test: home to app then quickly unstash Change-Id: I35f23842f289fce95d102a9a93dc94cd033fa8cc --- .../launcher3/taskbar/TaskbarViewController.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index 3d22e7895f..4614e8ddc7 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -122,7 +122,9 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private AnimatorPlaybackController mIconAlignControllerLazy = null; private Runnable mOnControllerPreCreateCallback = NO_OP; + // Stored here as signals to determine if the mIconAlignController needs to be recreated. private boolean mIsHotseatIconOnTopWhenAligned; + private boolean mIsStashed; private final DeviceProfile.OnDeviceProfileChangeListener mDeviceProfileChangeListener = dp -> commitRunningAppsToUI(); @@ -435,10 +437,13 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar public void setLauncherIconAlignment(float alignmentRatio, DeviceProfile launcherDp) { boolean isHotseatIconOnTopWhenAligned = mControllers.uiController.isHotseatIconOnTopWhenAligned(); - // When mIsHotseatIconOnTopWhenAligned changes, animation needs to be re-created. + boolean isStashed = mControllers.taskbarStashController.isStashed(); + // Re-create animation when mIsHotseatIconOnTopWhenAligned or mIsStashed changes. if (mIconAlignControllerLazy == null - || mIsHotseatIconOnTopWhenAligned != isHotseatIconOnTopWhenAligned) { + || mIsHotseatIconOnTopWhenAligned != isHotseatIconOnTopWhenAligned + || mIsStashed != isStashed) { mIsHotseatIconOnTopWhenAligned = isHotseatIconOnTopWhenAligned; + mIsStashed = isStashed; mIconAlignControllerLazy = createIconAlignmentController(launcherDp); } mIconAlignControllerLazy.setPlayFraction(alignmentRatio); @@ -500,7 +505,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar || (isTaskbarDividerView && FeatureFlags.ENABLE_TASKBAR_PINNING.get())) { if (!isToHome && mIsHotseatIconOnTopWhenAligned - && mControllers.taskbarStashController.isStashed()) { + && mIsStashed) { // Prevent All Apps icon from appearing when going from hotseat to nav handle. setter.setViewAlpha(child, 0, Interpolators.clampToProgress(LINEAR, 0f, 0f)); } else {