Merge "Fix QSB flicker when returning home." into tm-qpr-dev am: 5b01486024

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/22118378

Change-Id: I3161c17c1d3eb17e6cdbb100abbc03ec21a170b8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
index 4d163aa..a1c9744 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
@@ -89,8 +89,22 @@
     // We skip any view synchronizations during init/destroy.
     private boolean mCanSyncViews;
 
+    private boolean mIsQsbInline;
+
     private final DeviceProfile.OnDeviceProfileChangeListener mOnDeviceProfileChangeListener =
-            dp -> updateIconAlphaForHome(mIconAlphaForHome.getValue());
+            new DeviceProfile.OnDeviceProfileChangeListener() {
+                @Override
+                public void onDeviceProfileChanged(DeviceProfile dp) {
+                    if (mIsQsbInline && !dp.isQsbInline) {
+                        // We only modify QSB alpha if isQsbInline = true. If we switch to a DP
+                        // where isQsbInline = false, then we need to reset the alpha.
+                        mLauncher.getHotseat().setQsbAlpha(1f);
+                    }
+                    mIsQsbInline = dp.isQsbInline;
+                    TaskbarLauncherStateController.this.updateIconAlphaForHome(
+                            mIconAlphaForHome.getValue());
+                }
+            };
 
     private final StateManager.StateListener<LauncherState> mStateListener =
             new StateManager.StateListener<LauncherState>() {
@@ -131,6 +145,8 @@
         mControllers = controllers;
         mLauncher = launcher;
 
+        mIsQsbInline = mLauncher.getDeviceProfile().isQsbInline;
+
         mTaskbarBackgroundAlpha = mControllers.taskbarDragLayerController
                 .getTaskbarBackgroundAlpha();
         mTaskbarCornerRoundness = mControllers.getTaskbarCornerRoundness();
@@ -497,8 +513,9 @@
                 "updateIconAlphaForHome - setIconsAlpha(" + (hotseatVisible ? 1 : 0)
                         + "), isTaskbarPresent: " + mLauncher.getDeviceProfile().isTaskbarPresent);
         mLauncher.getHotseat().setIconsAlpha(hotseatVisible ? 1 : 0);
-        mLauncher.getHotseat().setQsbAlpha(
-                mLauncher.getDeviceProfile().isQsbInline && !hotseatVisible ? 0 : 1);
+        if (mIsQsbInline) {
+            mLauncher.getHotseat().setQsbAlpha(hotseatVisible ? 1 : 0);
+        }
     }
 
     private final class TaskBarRecentsAnimationListener implements