mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-02 17:06:49 +00:00
Only recreate taskbar for uiMode theme changes
Test: simulate docking/undocking, ensure taskbar is not recreated; set dark/light theme and ensure taskbar is still recreated Fixes: 233459895 Change-Id: I583557039f4a7c02baaa5e62eb888f55d659adb0
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user