summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTracy Zhou <tracyzhou@google.com>2023-12-04 20:17:14 -0800
committerTracy Zhou <tracyzhou@google.com>2023-12-12 19:33:42 -0800
commitf441fd67d3e6419efd7dad6cb6bac652ab7d059a (patch)
treeda28321bca29ebb3f61ca444c26e86fadec2cb26
parent4266fa49e23641a3baa7968bcba60fd507dc80bd (diff)
downloadLauncher3-f441fd67d3e6419efd7dad6cb6bac652ab7d059a.tar.gz
Make sure the task bar stays unstashed upon configuration change
So we recreate task bars when configuration is changed, if ENABLE_TASKBAR_NAVBAR_UNIFICATION = true. In order for unstashed state to propagate, we need to save STASHED_IN_APP_AUTO in TaskbarSharedState. Fixes: 311429718 Test: Unstash the task bar in app, rotate, make sure the task bar stays unstashed Change-Id: I7db773725ea89976612e9e91af5b6911d0ec5fc0
-rw-r--r--quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java4
-rw-r--r--quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java13
2 files changed, 14 insertions, 3 deletions
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java
index 1224b3f064..d09f74c65a 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java
@@ -86,4 +86,8 @@ public class TaskbarSharedState {
public void setTaskbarWasPinned(boolean taskbarWasPinned) {
mTaskbarWasPinned = taskbarWasPinned;
}
+
+ // To track if taskbar was stashed / unstashed between configuration changes (which recreates
+ // the task bar).
+ public Boolean taskbarWasStashedAuto = true;
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index c74ddcbd21..be6e7e72a9 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
@@ -21,6 +21,7 @@ import static com.android.app.animation.Interpolators.EMPHASIZED;
import static com.android.app.animation.Interpolators.FINAL_FRAME;
import static com.android.app.animation.Interpolators.INSTANT;
import static com.android.app.animation.Interpolators.LINEAR;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_HIDE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_SHOW;
import static com.android.launcher3.taskbar.TaskbarKeyguardController.MASK_ANY_SYSUI_LOCKED;
@@ -306,8 +307,12 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
boolean isTransientTaskbar = DisplayController.isTransientTaskbar(mActivity);
boolean isInSetup = !mActivity.isUserSetupComplete() || setupUIVisible;
- updateStateForFlag(FLAG_STASHED_IN_APP_AUTO,
- isTransientTaskbar && !mTaskbarSharedState.getTaskbarWasPinned());
+ boolean isStashedInAppAuto =
+ isTransientTaskbar && !mTaskbarSharedState.getTaskbarWasPinned();
+ if (ENABLE_TASKBAR_NAVBAR_UNIFICATION) {
+ isStashedInAppAuto = isStashedInAppAuto && mTaskbarSharedState.taskbarWasStashedAuto;
+ }
+ updateStateForFlag(FLAG_STASHED_IN_APP_AUTO, isStashedInAppAuto);
updateStateForFlag(FLAG_STASHED_IN_APP_SETUP, isInSetup);
updateStateForFlag(FLAG_IN_SETUP, isInSetup);
updateStateForFlag(FLAG_STASHED_SMALL_SCREEN, isPhoneMode()
@@ -316,7 +321,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
// us that we're paused until a bit later. This avoids flickering upon recreating taskbar.
updateStateForFlag(FLAG_IN_APP, true);
applyState(/* duration = */ 0);
- if (mTaskbarSharedState.getTaskbarWasPinned()) {
+ if (mTaskbarSharedState.getTaskbarWasPinned()
+ || !mTaskbarSharedState.taskbarWasStashedAuto) {
tryStartTaskbarTimeout();
}
notifyStashChange(/* visible */ false, /* stashed */ isStashedInApp());
@@ -491,6 +497,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
}
if (hasAnyFlag(FLAG_STASHED_IN_APP_AUTO) != stash) {
+ mTaskbarSharedState.taskbarWasStashedAuto = stash;
updateStateForFlag(FLAG_STASHED_IN_APP_AUTO, stash);
applyState();
}