From 4b5f6913ef4d593b3f735c22c2f676f5cef2624d Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Thu, 16 Mar 2023 17:26:14 -0700 Subject: [PATCH] Fix QSB flicker when returning home. We only set qsb alpha if isQsbInline = true, since that is when we draw/animate the qsb in the taskbar. Fixes: 269164187 Test: isQsbInline = true / false Change-Id: I92022135e74f734a8e50c606dc9c605df39a9f97 --- .../TaskbarLauncherStateController.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 4d163aa0c0..a1c9744b66 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -89,8 +89,22 @@ import java.util.StringJoiner; // 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 mStateListener = new StateManager.StateListener() { @@ -131,6 +145,8 @@ import java.util.StringJoiner; mControllers = controllers; mLauncher = launcher; + mIsQsbInline = mLauncher.getDeviceProfile().isQsbInline; + mTaskbarBackgroundAlpha = mControllers.taskbarDragLayerController .getTaskbarBackgroundAlpha(); mTaskbarCornerRoundness = mControllers.getTaskbarCornerRoundness(); @@ -497,8 +513,9 @@ import java.util.StringJoiner; "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