From bf7a4db0de4584aedbd1159d3c1076e93c39862c Mon Sep 17 00:00:00 2001 From: mpodolian Date: Tue, 17 Sep 2024 13:50:34 -0700 Subject: [PATCH] Unstash hotseat immediately if go out of the launcher home. When navigation mode is set to 3 buttons, it is possible for user to click on recent apps button, so for such scenario taskbar should be immediately un-stashed Test: Manual Set 3 buttons navigation mode. Go to Launcher home. Expand bubble bar. Press recent apps button. Press the home button. Observe hotseat is visible. Video: http://recall/-/gx8ASgewUeUS3QYohfrd1J/fX0gSp18Riw8mYYAw0wj8W Bug: 367488218 Flag: com.android.wm.shell.enable_bubble_bar Change-Id: Id65fd9add720125a340294311d470f2be50d43f8 --- .../launcher3/taskbar/LauncherTaskbarUIController.java | 5 +++++ .../taskbar/TaskbarLauncherStateController.java | 10 +++++++++- .../launcher3/taskbar/TaskbarStashController.java | 5 +++++ .../android/launcher3/taskbar/TaskbarUIController.java | 4 ++++ .../taskbar/bubbles/BubbleBarViewController.java | 7 ++++++- 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 59bf8d53cb..4d144ca311 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -163,6 +163,11 @@ public class LauncherTaskbarUIController extends TaskbarUIController { mTaskbarLauncherStateController.stashHotseat(stash); } + @Override + public void unStashHotseatInstantly() { + mTaskbarLauncherStateController.unStashHotseatInstantly(); + } + /** * Adds the Launcher resume animator to the given animator set. * diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 84c834b69b..6bf1ee6802 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -16,9 +16,9 @@ package com.android.launcher3.taskbar; import static com.android.app.animation.Interpolators.EMPHASIZED; -import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.Hotseat.ALPHA_CHANNEL_TASKBAR_ALIGNMENT; import static com.android.launcher3.Hotseat.ALPHA_CHANNEL_TASKBAR_STASH; +import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_OVERVIEW; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE; @@ -763,6 +763,14 @@ public class TaskbarLauncherStateController { } } + protected void unStashHotseatInstantly() { + TaskbarStashController stashController = mControllers.taskbarStashController; + stashController.updateStateForFlag(FLAG_STASHED_FOR_BUBBLES, false); + stashController.applyState(/* duration = */ 0); + updateIconAlphaForHome(/* taskbarAlpha = */ 0, + ALPHA_CHANNEL_TASKBAR_STASH, /* updateTaskbarAlpha = */ false); + } + /** * Resets and updates the icon alignment. */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index 1f7b44fbd7..9b7d3bfa6e 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -402,6 +402,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba mControllers.uiController.stashHotseat(stash); } + /** Instantly un-stashes the hotseat. */ + public void unStashHotseatInstantly() { + mControllers.uiController.unStashHotseatInstantly(); + } + /** * Returns whether the taskbar should be stashed in apps (e.g. user long pressed to stash). */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java index c04721663d..9163246981 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java @@ -432,4 +432,8 @@ public class TaskbarUIController { /** Sets whether the hotseat is stashed */ public void stashHotseat(boolean stash) { } + + /** Un-stash the hotseat instantly */ + public void unStashHotseatInstantly() { + } } diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java index 41762929f9..025c03860c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java @@ -748,7 +748,8 @@ public class BubbleBarViewController { /** * Hides the persistent taskbar if it is going to intersect with the expanded bubble bar if in - * app or overview. Set the hotseat stashed state if on launcher home screen. + * app or overview. Set the hotseat stashed state if on launcher home screen. If not on launcher + * home screen and hotseat is stashed immediately un-stashes the hotseat. */ private void adjustTaskbarAndHotseatToBubbleBarState(boolean isBubbleBarExpanded) { if (mBubbleStashController.isBubblesShowingOnHome()) { @@ -760,6 +761,10 @@ public class BubbleBarViewController { .animateToValue(hideTaskbar ? 0 : 1) .start(); } + if (!mBubbleStashController.isBubblesShowingOnHome() + && mTaskbarStashController.isHiddenForBubbles()) { + mTaskbarStashController.unStashHotseatInstantly(); + } } /** Return {@code true} if expanded bubble bar would intersect the taskbar. */