Merge "Only recreate taskbar for uiMode theme changes" into tm-qpr-dev am: a8b120bc7e

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

Change-Id: Idf78f029f4865947a0a88d9825d52cae947e4fac
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Tony Wickham
2023-03-01 22:19:39 +00:00
committed by Automerger Merge Worker

View File

@@ -130,10 +130,10 @@ public class TaskbarManager {
? LauncherAppState.getIDP(mContext).getDeviceProfile(mContext)
: null;
int configDiff = mOldConfig.diff(newConfig);
int configDiffForRecreate = configDiff;
int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS
| ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE
| ActivityInfo.CONFIG_SCREEN_SIZE;
boolean requiresRecreate = (configDiff & configsRequiringRecreate) != 0;
if ((configDiff & ActivityInfo.CONFIG_SCREEN_SIZE) != 0
&& mTaskbarActivityContext != null && dp != null
&& !isPhoneMode(dp)) {
@@ -146,12 +146,19 @@ public class TaskbarManager {
int oldWidth = isOrientationChange ? oldDp.heightPx : oldDp.widthPx;
int oldHeight = isOrientationChange ? oldDp.widthPx : oldDp.heightPx;
if (dp.widthPx == oldWidth && dp.heightPx == oldHeight) {
configDiff &= ~ActivityInfo.CONFIG_SCREEN_SIZE;
requiresRecreate = (configDiff & configsRequiringRecreate) != 0;
configDiffForRecreate &= ~ActivityInfo.CONFIG_SCREEN_SIZE;
}
}
if ((configDiff & ActivityInfo.CONFIG_UI_MODE) != 0) {
// Only recreate for theme changes, not other UI mode changes such as docking.
int oldUiNightMode = (mOldConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK);
int newUiNightMode = (newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK);
if (oldUiNightMode == newUiNightMode) {
configDiffForRecreate &= ~ActivityInfo.CONFIG_UI_MODE;
}
}
if (requiresRecreate) {
if ((configDiffForRecreate & configsRequiringRecreate) != 0) {
recreateTaskbar();
} else {
// Config change might be handled without re-creating the taskbar