mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-17 09:38:19 +00:00
Fix taskbar stash state not persisting properly across recreate
Because we check supportsVisualStashing() in TaskbarStashController#init(), we need to avoid using TaskbarUIController to provide that value since TaskbarUIController isn't initialized until a bit later than the other controllers. So I moved the logic from supportsVisualStashing() back to TaskbarStashController, but still allow TaskbarUIController to override it (e.g. for DesktopTaskbarUIController). After that fix, I noticed that force stopping launcher (to test the fix) would briefly show the taskbar background before resetting the stashed state. This is also due to LauncherTaskbarUIController not being ready immediately, since that's what sets FLAG_IN_APP due to launcher being paused. To work around this, I set FLAG_IN_APP to true by default in TaskbarStashController#init(), since that is the most common case, and taskbar background/stashed handle isn't shown on home anyway. Test: Force stop launcher while taskbar is stashed, verify it recreates as stashed without background flicker; same when changing wallpaper color on home or in app; also tested when taskbar isn't stashed and in 3 button mode for good measure Test: testHideTaskbarPersistsOnRecreate Fixes: 235986838 Change-Id: Ie55bd70e8288d5ad7433dde970f18c176831d747
This commit is contained in:
@@ -210,7 +210,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
StashedHandleViewController.ALPHA_INDEX_STASHED);
|
||||
mTaskbarStashedHandleHintScale = stashedHandleController.getStashedHandleHintScale();
|
||||
|
||||
boolean isManuallyStashedInApp = supportsManualStashing()
|
||||
// We use supportsVisualStashing() here instead of supportsManualStashing() because we want
|
||||
// it to work properly for tests that recreate taskbar. This check is here just to ensure
|
||||
// that taskbar unstashes when going to 3 button mode (supportsVisualStashing() false).
|
||||
boolean isManuallyStashedInApp = supportsVisualStashing()
|
||||
&& mPrefs.getBoolean(SHARED_PREFS_STASHED_KEY, DEFAULT_STASHED_PREF);
|
||||
boolean isInSetup = !mActivity.isUserSetupComplete() || setupUIVisible;
|
||||
updateStateForFlag(FLAG_STASHED_IN_APP_MANUAL, isManuallyStashedInApp);
|
||||
@@ -218,7 +221,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
updateStateForFlag(FLAG_IN_SETUP, isInSetup);
|
||||
updateStateForFlag(FLAG_STASHED_SMALL_SCREEN, isPhoneMode()
|
||||
&& !mActivity.isThreeButtonNav());
|
||||
applyState();
|
||||
// For now, assume we're in an app, since LauncherTaskbarUIController won't be able to tell
|
||||
// us that we're paused until a bit later. This avoids flickering upon recreating taskbar.
|
||||
updateStateForFlag(FLAG_IN_APP, true);
|
||||
applyState(/* duration = */ 0);
|
||||
|
||||
notifyStashChange(/* visible */ false, /* stashed */ isStashedInApp());
|
||||
}
|
||||
@@ -228,8 +234,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
* state.
|
||||
*/
|
||||
public boolean supportsVisualStashing() {
|
||||
return mControllers.uiController.supportsVisualStashing() ||
|
||||
(isPhoneMode() && !mActivity.isThreeButtonNav());
|
||||
return !mActivity.isThreeButtonNav() && mControllers.uiController.supportsVisualStashing();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user