From abaa481bfb26f2b7e4913d2bfb41476bc616db48 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Tue, 7 Sep 2021 12:15:25 -0700 Subject: [PATCH] Update taskbar color in onConfigurationChanged() Test: Change wallpaper, ensure taskbar updates to match Fixes: 199045474 Change-Id: I7ec8bbec8e31d2d03c09bf487ab55c86b95917e7 --- .../launcher3/taskbar/TaskbarManager.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index ec98bbf05a..453bf1cabd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -22,7 +22,10 @@ import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN; import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY; import static com.android.launcher3.util.DisplayController.CHANGE_SUPPORTED_BOUNDS; +import android.content.ComponentCallbacks; import android.content.Context; +import android.content.pm.ActivityInfo; +import android.content.res.Configuration; import android.hardware.display.DisplayManager; import android.net.Uri; import android.provider.Settings; @@ -58,6 +61,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen private final SysUINavigationMode mSysUINavigationMode; private final TaskbarNavButtonController mNavButtonController; private final SettingsCache.OnChangeListener mUserSetupCompleteListener; + private final ComponentCallbacks mComponentCallbacks; // The source for this provider is set when Launcher is available private final ScopedUnfoldTransitionProgressProvider mUnfoldProgressProvider = @@ -84,11 +88,27 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen mContext = service.createWindowContext(display, TYPE_APPLICATION_OVERLAY, null); mNavButtonController = new TaskbarNavButtonController(service); mUserSetupCompleteListener = isUserSetupComplete -> recreateTaskbar(); + mComponentCallbacks = new ComponentCallbacks() { + private Configuration mOldConfig = mContext.getResources().getConfiguration(); + + @Override + public void onConfigurationChanged(Configuration newConfig) { + if ((mOldConfig.diff(newConfig) & ActivityInfo.CONFIG_ASSETS_PATHS) != 0) { + // Color has changed, recreate taskbar to reload background color & icons. + recreateTaskbar(); + } + mOldConfig = newConfig; + } + + @Override + public void onLowMemory() { } + }; mDisplayController.addChangeListener(this); mSysUINavigationMode.addModeChangeListener(this); SettingsCache.INSTANCE.get(mContext).register(USER_SETUP_COMPLETE_URI, mUserSetupCompleteListener); + mContext.registerComponentCallbacks(mComponentCallbacks); recreateTaskbar(); } @@ -210,6 +230,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen mSysUINavigationMode.removeModeChangeListener(this); SettingsCache.INSTANCE.get(mContext).unregister(USER_SETUP_COMPLETE_URI, mUserSetupCompleteListener); + mContext.unregisterComponentCallbacks(mComponentCallbacks); } public @Nullable TaskbarActivityContext getCurrentActivityContext() {