Loading quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +21 −3 Original line number Diff line number Diff line Loading @@ -449,6 +449,11 @@ public class TaskbarActivityContext extends BaseTaskbarContext { return mControllers.taskbarDragController; } @Nullable public BubbleControllers getBubbleControllers() { return mControllers.bubbleControllers.orElse(null); } @Override public ViewCache getViewCache() { return mViewCache; Loading Loading @@ -641,8 +646,12 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mControllers.taskbarForceVisibleImmersiveController.updateSysuiFlags(systemUiStateFlags); mControllers.voiceInteractionWindowController.setIsVoiceInteractionWindowVisible( (systemUiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0, fromInit); mControllers.uiController.updateStateForSysuiFlags(systemUiStateFlags); mControllers.bubbleControllers.ifPresent(controllers -> { controllers.bubbleBarController.updateStateForSysuiFlags(systemUiStateFlags); controllers.bubbleStashedHandleViewController.setIsHomeButtonDisabled( mControllers.navbarButtonsViewController.isHomeDisabled()); }); } /** Loading Loading @@ -738,7 +747,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { } } mWindowLayoutParams.height = height; mControllers.taskbarInsetsController.onTaskbarWindowHeightOrInsetsChanged(); mControllers.taskbarInsetsController.onTaskbarOrBubblebarWindowHeightOrInsetsChanged(); mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams); } Loading Loading @@ -996,10 +1005,19 @@ public class TaskbarActivityContext extends BaseTaskbarContext { * Called when we want to unstash taskbar when user performs swipes up gesture. */ public void onSwipeToUnstashTaskbar() { mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(false); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(/* stash= */ false); mControllers.taskbarEduTooltipController.hide(); } /** * Called when we want to open bubblebar when user performs swipes up gesture. */ public void onSwipeToOpenBubblebar() { mControllers.bubbleControllers.ifPresent(controllers -> { controllers.bubbleStashController.showBubbleBar(/* expandBubbles= */ true); }); } /** Returns {@code true} if Taskbar All Apps is open. */ public boolean isTaskbarAllAppsOpen() { return mControllers.taskbarAllAppsController.isOpen(); Loading quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +37 −12 Original line number Diff line number Diff line Loading @@ -56,13 +56,13 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas private val touchableRegion: Region = Region() private val insetsOwner: IBinder = Binder() private val deviceProfileChangeListener = { _: DeviceProfile -> onTaskbarWindowHeightOrInsetsChanged() onTaskbarOrBubblebarWindowHeightOrInsetsChanged() } private val gestureNavSettingsObserver = GestureNavigationSettingsObserver( context.mainThreadHandler, context, this::onTaskbarWindowHeightOrInsetsChanged this::onTaskbarOrBubblebarWindowHeightOrInsetsChanged ) // Initialized in init. Loading @@ -72,7 +72,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas fun init(controllers: TaskbarControllers) { this.controllers = controllers windowLayoutParams = context.windowLayoutParams onTaskbarWindowHeightOrInsetsChanged() onTaskbarOrBubblebarWindowHeightOrInsetsChanged() context.addOnDeviceProfileChangeListener(deviceProfileChangeListener) gestureNavSettingsObserver.registerForCallingUser() Loading @@ -83,7 +83,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas gestureNavSettingsObserver.unregister() } fun onTaskbarWindowHeightOrInsetsChanged() { fun onTaskbarOrBubblebarWindowHeightOrInsetsChanged() { val tappableHeight = controllers.taskbarStashController.tappableHeightToReportToApps // We only report tappableElement height for unstashed, persistent taskbar, // which is also when we draw the rounded corners above taskbar. Loading Loading @@ -121,13 +121,33 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas ) } val touchableHeight = controllers.taskbarStashController.touchableHeight val taskbarTouchableHeight = controllers.taskbarStashController.touchableHeight val bubblesTouchableHeight = if (controllers.bubbleControllers.isPresent) controllers.bubbleControllers.get().bubbleStashController.touchableHeight else 0 val touchableHeight = Math.max(taskbarTouchableHeight, bubblesTouchableHeight) if ( controllers.bubbleControllers.isPresent && controllers.bubbleControllers.get().bubbleStashController.isBubblesShowingOnHome ) { val iconBounds = controllers.bubbleControllers.get().bubbleBarViewController.bubbleBarBounds touchableRegion.set( iconBounds.left, iconBounds.top, iconBounds.right, iconBounds.bottom ) } else { touchableRegion.set( 0, windowLayoutParams.height - touchableHeight, context.deviceProfile.widthPx, windowLayoutParams.height ) } val contentHeight = controllers.taskbarStashController.contentHeightToReportToApps val res = context.resources for (provider in windowLayoutParams.providedInsets) { Loading Loading @@ -211,6 +231,9 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas context.dragLayer, insetsInfo.touchableRegion ) val bubbleBarVisible = controllers.bubbleControllers.isPresent && controllers.bubbleControllers.get().bubbleBarViewController.isBubbleBarVisible() var insetsIsTouchableRegion = true if (context.dragLayer.alpha < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { // Let touches pass through us. Loading @@ -231,7 +254,9 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME) insetsIsTouchableRegion = false } else if ( controllers.taskbarViewController.areIconsVisible() || context.isNavBarKidsModeActive controllers.taskbarViewController.areIconsVisible() || context.isNavBarKidsModeActive || bubbleBarVisible ) { // Taskbar has some touchable elements, take over the full taskbar area if ( Loading quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +10 −1 Original line number Diff line number Diff line Loading @@ -404,6 +404,14 @@ public class TaskbarLauncherStateController { + ", mLauncherState: " + mLauncherState + ", toAlignment: " + toAlignment); } mControllers.bubbleControllers.ifPresent(controllers -> { // Show the bubble bar when on launcher home or in overview. boolean onHome = isInLauncher && mLauncherState == LauncherState.NORMAL; boolean onOverview = mLauncherState == LauncherState.OVERVIEW; controllers.bubbleStashController.setBubblesShowingOnHome(onHome); controllers.bubbleStashController.setBubblesShowingOnOverview(onOverview); }); AnimatorSet animatorSet = new AnimatorSet(); if (hasAnyFlag(changedFlags, FLAG_LAUNCHER_IN_STATE_TRANSITION)) { Loading Loading @@ -474,7 +482,8 @@ public class TaskbarLauncherStateController { public void onAnimationEnd(Animator animation) { TaskbarStashController stashController = mControllers.taskbarStashController; stashController.updateAndAnimateTransientTaskbar(/* stash */ true); stashController.updateAndAnimateTransientTaskbar( /* stash */ true, /* bubblesShouldFollow */ true); } }); } else { Loading quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java +6 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.launcher3.taskbar; import static com.android.launcher3.taskbar.bubbles.BubbleBarController.BUBBLE_BAR_ENABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BUBBLES_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED; Loading @@ -23,6 +24,7 @@ import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.util.DisplayController; import com.android.quickstep.SystemUiProxy; import java.io.PrintWriter; Loading Loading @@ -63,6 +65,10 @@ public class TaskbarScrimViewController implements TaskbarControllers.LoggableTa * Updates the scrim state based on the flags. */ public void updateStateForSysuiFlags(int stateFlags, boolean skipAnim) { if (BUBBLE_BAR_ENABLED && DisplayController.isTransientTaskbar(mActivity)) { // These scrims aren't used if bubble bar & transient taskbar are active. return; } final boolean bubblesExpanded = (stateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0; final boolean manageMenuExpanded = (stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0; Loading quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +49 −10 Original line number Diff line number Diff line Loading @@ -255,14 +255,15 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba private boolean mEnableBlockingTimeoutDuringTests = false; // Evaluate whether the handle should be stashed private final StatePropertyHolder mStatePropertyHolder = new StatePropertyHolder( flags -> { private final IntPredicate mIsStashedPredicate = flags -> { boolean inApp = hasAnyFlag(flags, FLAGS_IN_APP); boolean stashedInApp = hasAnyFlag(flags, FLAGS_STASHED_IN_APP); boolean stashedLauncherState = hasAnyFlag(flags, FLAG_IN_STASHED_LAUNCHER_STATE); boolean forceStashed = hasAnyFlag(flags, FLAGS_FORCE_STASHED); return (inApp && stashedInApp) || (!inApp && stashedLauncherState) || forceStashed; }); }; private final StatePropertyHolder mStatePropertyHolder = new StatePropertyHolder( mIsStashedPredicate); private boolean mIsTaskbarSystemActionRegistered = false; private TaskbarSharedState mTaskbarSharedState; Loading Loading @@ -501,9 +502,19 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } /** * Stash or unstashes the transient taskbar. * Stash or unstashes the transient taskbar, using the default TASKBAR_STASH_DURATION. * If bubble bar exists, it will match taskbars stashing behavior. */ public void updateAndAnimateTransientTaskbar(boolean stash) { updateAndAnimateTransientTaskbar(stash, /* shouldBubblesFollow= */ true); } /** * Stash or unstashes the transient taskbar. * @param stash whether transient taskbar should be stashed. * @param shouldBubblesFollow whether bubbles should match taskbars behavior. */ public void updateAndAnimateTransientTaskbar(boolean stash, boolean shouldBubblesFollow) { if (!DisplayController.isTransientTaskbar(mActivity)) { return; } Loading @@ -519,6 +530,34 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba updateStateForFlag(FLAG_STASHED_IN_APP_AUTO, stash); applyState(); } mControllers.bubbleControllers.ifPresent(controllers -> { if (shouldBubblesFollow) { final boolean willStash = mIsStashedPredicate.test(mState); if (willStash != controllers.bubbleStashController.isStashed()) { // Typically bubbles gets stashed / unstashed along with Taskbar, however, if // taskbar is becoming stashed because bubbles is being expanded, we don't want // to stash bubbles. if (willStash) { controllers.bubbleStashController.stashBubbleBar(); } else { controllers.bubbleStashController.showBubbleBar(false /* expandBubbles */); } } } }); } /** * Stashes transient taskbar after it has timed out. */ private void updateAndAnimateTransientTaskbarForTimeout() { // If bubbles are expanded we shouldn't stash them when taskbar is hidden // for the timeout. boolean bubbleBarExpanded = mControllers.bubbleControllers.isPresent() && mControllers.bubbleControllers.get().bubbleBarViewController.isExpanded(); updateAndAnimateTransientTaskbar(/* stash= */ true, /* shouldBubblesFollow= */ !bubbleBarExpanded); } /** Loading Loading @@ -886,7 +925,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba private void onIsStashedChanged(boolean isStashed) { mControllers.runAfterInit(() -> { mControllers.stashedHandleViewController.onIsStashedChanged(isStashed); mControllers.taskbarInsetsController.onTaskbarWindowHeightOrInsetsChanged(); mControllers.taskbarInsetsController.onTaskbarOrBubblebarWindowHeightOrInsetsChanged(); }); } Loading Loading @@ -1133,7 +1172,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba if (mControllers.taskbarAutohideSuspendController.isSuspended()) { return; } updateAndAnimateTransientTaskbar(true); updateAndAnimateTransientTaskbarForTimeout(); } @Override Loading Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +21 −3 Original line number Diff line number Diff line Loading @@ -449,6 +449,11 @@ public class TaskbarActivityContext extends BaseTaskbarContext { return mControllers.taskbarDragController; } @Nullable public BubbleControllers getBubbleControllers() { return mControllers.bubbleControllers.orElse(null); } @Override public ViewCache getViewCache() { return mViewCache; Loading Loading @@ -641,8 +646,12 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mControllers.taskbarForceVisibleImmersiveController.updateSysuiFlags(systemUiStateFlags); mControllers.voiceInteractionWindowController.setIsVoiceInteractionWindowVisible( (systemUiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0, fromInit); mControllers.uiController.updateStateForSysuiFlags(systemUiStateFlags); mControllers.bubbleControllers.ifPresent(controllers -> { controllers.bubbleBarController.updateStateForSysuiFlags(systemUiStateFlags); controllers.bubbleStashedHandleViewController.setIsHomeButtonDisabled( mControllers.navbarButtonsViewController.isHomeDisabled()); }); } /** Loading Loading @@ -738,7 +747,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { } } mWindowLayoutParams.height = height; mControllers.taskbarInsetsController.onTaskbarWindowHeightOrInsetsChanged(); mControllers.taskbarInsetsController.onTaskbarOrBubblebarWindowHeightOrInsetsChanged(); mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams); } Loading Loading @@ -996,10 +1005,19 @@ public class TaskbarActivityContext extends BaseTaskbarContext { * Called when we want to unstash taskbar when user performs swipes up gesture. */ public void onSwipeToUnstashTaskbar() { mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(false); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(/* stash= */ false); mControllers.taskbarEduTooltipController.hide(); } /** * Called when we want to open bubblebar when user performs swipes up gesture. */ public void onSwipeToOpenBubblebar() { mControllers.bubbleControllers.ifPresent(controllers -> { controllers.bubbleStashController.showBubbleBar(/* expandBubbles= */ true); }); } /** Returns {@code true} if Taskbar All Apps is open. */ public boolean isTaskbarAllAppsOpen() { return mControllers.taskbarAllAppsController.isOpen(); Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +37 −12 Original line number Diff line number Diff line Loading @@ -56,13 +56,13 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas private val touchableRegion: Region = Region() private val insetsOwner: IBinder = Binder() private val deviceProfileChangeListener = { _: DeviceProfile -> onTaskbarWindowHeightOrInsetsChanged() onTaskbarOrBubblebarWindowHeightOrInsetsChanged() } private val gestureNavSettingsObserver = GestureNavigationSettingsObserver( context.mainThreadHandler, context, this::onTaskbarWindowHeightOrInsetsChanged this::onTaskbarOrBubblebarWindowHeightOrInsetsChanged ) // Initialized in init. Loading @@ -72,7 +72,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas fun init(controllers: TaskbarControllers) { this.controllers = controllers windowLayoutParams = context.windowLayoutParams onTaskbarWindowHeightOrInsetsChanged() onTaskbarOrBubblebarWindowHeightOrInsetsChanged() context.addOnDeviceProfileChangeListener(deviceProfileChangeListener) gestureNavSettingsObserver.registerForCallingUser() Loading @@ -83,7 +83,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas gestureNavSettingsObserver.unregister() } fun onTaskbarWindowHeightOrInsetsChanged() { fun onTaskbarOrBubblebarWindowHeightOrInsetsChanged() { val tappableHeight = controllers.taskbarStashController.tappableHeightToReportToApps // We only report tappableElement height for unstashed, persistent taskbar, // which is also when we draw the rounded corners above taskbar. Loading Loading @@ -121,13 +121,33 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas ) } val touchableHeight = controllers.taskbarStashController.touchableHeight val taskbarTouchableHeight = controllers.taskbarStashController.touchableHeight val bubblesTouchableHeight = if (controllers.bubbleControllers.isPresent) controllers.bubbleControllers.get().bubbleStashController.touchableHeight else 0 val touchableHeight = Math.max(taskbarTouchableHeight, bubblesTouchableHeight) if ( controllers.bubbleControllers.isPresent && controllers.bubbleControllers.get().bubbleStashController.isBubblesShowingOnHome ) { val iconBounds = controllers.bubbleControllers.get().bubbleBarViewController.bubbleBarBounds touchableRegion.set( iconBounds.left, iconBounds.top, iconBounds.right, iconBounds.bottom ) } else { touchableRegion.set( 0, windowLayoutParams.height - touchableHeight, context.deviceProfile.widthPx, windowLayoutParams.height ) } val contentHeight = controllers.taskbarStashController.contentHeightToReportToApps val res = context.resources for (provider in windowLayoutParams.providedInsets) { Loading Loading @@ -211,6 +231,9 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas context.dragLayer, insetsInfo.touchableRegion ) val bubbleBarVisible = controllers.bubbleControllers.isPresent && controllers.bubbleControllers.get().bubbleBarViewController.isBubbleBarVisible() var insetsIsTouchableRegion = true if (context.dragLayer.alpha < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { // Let touches pass through us. Loading @@ -231,7 +254,9 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME) insetsIsTouchableRegion = false } else if ( controllers.taskbarViewController.areIconsVisible() || context.isNavBarKidsModeActive controllers.taskbarViewController.areIconsVisible() || context.isNavBarKidsModeActive || bubbleBarVisible ) { // Taskbar has some touchable elements, take over the full taskbar area if ( Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +10 −1 Original line number Diff line number Diff line Loading @@ -404,6 +404,14 @@ public class TaskbarLauncherStateController { + ", mLauncherState: " + mLauncherState + ", toAlignment: " + toAlignment); } mControllers.bubbleControllers.ifPresent(controllers -> { // Show the bubble bar when on launcher home or in overview. boolean onHome = isInLauncher && mLauncherState == LauncherState.NORMAL; boolean onOverview = mLauncherState == LauncherState.OVERVIEW; controllers.bubbleStashController.setBubblesShowingOnHome(onHome); controllers.bubbleStashController.setBubblesShowingOnOverview(onOverview); }); AnimatorSet animatorSet = new AnimatorSet(); if (hasAnyFlag(changedFlags, FLAG_LAUNCHER_IN_STATE_TRANSITION)) { Loading Loading @@ -474,7 +482,8 @@ public class TaskbarLauncherStateController { public void onAnimationEnd(Animator animation) { TaskbarStashController stashController = mControllers.taskbarStashController; stashController.updateAndAnimateTransientTaskbar(/* stash */ true); stashController.updateAndAnimateTransientTaskbar( /* stash */ true, /* bubblesShouldFollow */ true); } }); } else { Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java +6 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.launcher3.taskbar; import static com.android.launcher3.taskbar.bubbles.BubbleBarController.BUBBLE_BAR_ENABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BUBBLES_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED; Loading @@ -23,6 +24,7 @@ import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.util.DisplayController; import com.android.quickstep.SystemUiProxy; import java.io.PrintWriter; Loading Loading @@ -63,6 +65,10 @@ public class TaskbarScrimViewController implements TaskbarControllers.LoggableTa * Updates the scrim state based on the flags. */ public void updateStateForSysuiFlags(int stateFlags, boolean skipAnim) { if (BUBBLE_BAR_ENABLED && DisplayController.isTransientTaskbar(mActivity)) { // These scrims aren't used if bubble bar & transient taskbar are active. return; } final boolean bubblesExpanded = (stateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0; final boolean manageMenuExpanded = (stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0; Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +49 −10 Original line number Diff line number Diff line Loading @@ -255,14 +255,15 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba private boolean mEnableBlockingTimeoutDuringTests = false; // Evaluate whether the handle should be stashed private final StatePropertyHolder mStatePropertyHolder = new StatePropertyHolder( flags -> { private final IntPredicate mIsStashedPredicate = flags -> { boolean inApp = hasAnyFlag(flags, FLAGS_IN_APP); boolean stashedInApp = hasAnyFlag(flags, FLAGS_STASHED_IN_APP); boolean stashedLauncherState = hasAnyFlag(flags, FLAG_IN_STASHED_LAUNCHER_STATE); boolean forceStashed = hasAnyFlag(flags, FLAGS_FORCE_STASHED); return (inApp && stashedInApp) || (!inApp && stashedLauncherState) || forceStashed; }); }; private final StatePropertyHolder mStatePropertyHolder = new StatePropertyHolder( mIsStashedPredicate); private boolean mIsTaskbarSystemActionRegistered = false; private TaskbarSharedState mTaskbarSharedState; Loading Loading @@ -501,9 +502,19 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } /** * Stash or unstashes the transient taskbar. * Stash or unstashes the transient taskbar, using the default TASKBAR_STASH_DURATION. * If bubble bar exists, it will match taskbars stashing behavior. */ public void updateAndAnimateTransientTaskbar(boolean stash) { updateAndAnimateTransientTaskbar(stash, /* shouldBubblesFollow= */ true); } /** * Stash or unstashes the transient taskbar. * @param stash whether transient taskbar should be stashed. * @param shouldBubblesFollow whether bubbles should match taskbars behavior. */ public void updateAndAnimateTransientTaskbar(boolean stash, boolean shouldBubblesFollow) { if (!DisplayController.isTransientTaskbar(mActivity)) { return; } Loading @@ -519,6 +530,34 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba updateStateForFlag(FLAG_STASHED_IN_APP_AUTO, stash); applyState(); } mControllers.bubbleControllers.ifPresent(controllers -> { if (shouldBubblesFollow) { final boolean willStash = mIsStashedPredicate.test(mState); if (willStash != controllers.bubbleStashController.isStashed()) { // Typically bubbles gets stashed / unstashed along with Taskbar, however, if // taskbar is becoming stashed because bubbles is being expanded, we don't want // to stash bubbles. if (willStash) { controllers.bubbleStashController.stashBubbleBar(); } else { controllers.bubbleStashController.showBubbleBar(false /* expandBubbles */); } } } }); } /** * Stashes transient taskbar after it has timed out. */ private void updateAndAnimateTransientTaskbarForTimeout() { // If bubbles are expanded we shouldn't stash them when taskbar is hidden // for the timeout. boolean bubbleBarExpanded = mControllers.bubbleControllers.isPresent() && mControllers.bubbleControllers.get().bubbleBarViewController.isExpanded(); updateAndAnimateTransientTaskbar(/* stash= */ true, /* shouldBubblesFollow= */ !bubbleBarExpanded); } /** Loading Loading @@ -886,7 +925,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba private void onIsStashedChanged(boolean isStashed) { mControllers.runAfterInit(() -> { mControllers.stashedHandleViewController.onIsStashedChanged(isStashed); mControllers.taskbarInsetsController.onTaskbarWindowHeightOrInsetsChanged(); mControllers.taskbarInsetsController.onTaskbarOrBubblebarWindowHeightOrInsetsChanged(); }); } Loading Loading @@ -1133,7 +1172,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba if (mControllers.taskbarAutohideSuspendController.isSuspended()) { return; } updateAndAnimateTransientTaskbar(true); updateAndAnimateTransientTaskbarForTimeout(); } @Override Loading