diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 831bc1167d..5dfef97fec 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -25,6 +25,9 @@ import static com.android.launcher3.BaseActivity.EVENT_DESTROYED; import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate; +import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY; +import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE; +import static com.android.launcher3.util.DisplayController.CHANGE_TASKBAR_PINNING; import static com.android.launcher3.util.DisplayController.TASKBAR_NOT_DESTROYED_TAG; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange; @@ -55,7 +58,6 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.launcher3.DeviceProfile; -import com.android.launcher3.InvariantDeviceProfile.OnIDPChangeListener; import com.android.launcher3.LauncherAppState; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.statemanager.StatefulActivity; @@ -71,7 +73,6 @@ import com.android.quickstep.util.AssistUtils; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; -import com.android.wm.shell.Flags; import java.io.PrintWriter; import java.util.StringJoiner; @@ -135,7 +136,17 @@ public class TaskbarManager { * We use WindowManager's ComponentCallbacks() for internal UI changes (similar to an Activity) * which comes via a different channel */ - private final OnIDPChangeListener mIdpChangeListener = c -> recreateTaskbar(); + private final RecreationListener mRecreationListener = new RecreationListener(); + + private class RecreationListener implements DisplayController.DisplayInfoChangeListener { + @Override + public void onDisplayInfoChanged(Context context, DisplayController.Info info, int flags) { + if ((flags & (CHANGE_DENSITY | CHANGE_NAVIGATION_MODE + | CHANGE_TASKBAR_PINNING)) != 0) { + recreateTaskbar(); + } + } + } private final SettingsCache.OnChangeListener mOnSettingsChangeListener = c -> recreateTaskbar(); private boolean mUserUnlocked = false; @@ -353,7 +364,7 @@ public class TaskbarManager { */ public void onUserUnlocked() { mUserUnlocked = true; - LauncherAppState.getIDP(mContext).addOnChangeListener(mIdpChangeListener); + DisplayController.INSTANCE.get(mContext).addChangeListener(mRecreationListener); recreateTaskbar(); addTaskbarRootViewToWindow(); } @@ -551,7 +562,7 @@ public class TaskbarManager { () -> mTaskbarBroadcastReceiver.unregisterReceiverSafely(mContext)); destroyExistingTaskbar(); if (mUserUnlocked) { - LauncherAppState.getIDP(mContext).removeOnChangeListener(mIdpChangeListener); + DisplayController.INSTANCE.get(mContext).removeChangeListener(mRecreationListener); } SettingsCache.INSTANCE.get(mContext) .unregister(USER_SETUP_COMPLETE_URI, mOnSettingsChangeListener);