From 6472119d4b3ba8c69f596e06e24f267902d8a0de Mon Sep 17 00:00:00 2001 From: Jagrut Desai Date: Fri, 8 Sep 2023 14:35:34 -0700 Subject: [PATCH] Apply ForciblyShown WindowLayoutParam flags for Transient Taskbar Test: Manual Bug: 278078311 Flag: Not needed Change-Id: Ia963e45b3b4e6d928b6292b80b73394e76fe2325 --- .../taskbar/TaskbarActivityContext.java | 23 ++++++++++++++++--- .../taskbar/TaskbarStashController.java | 1 + 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 0b83a88bcc..1ef90079e6 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -57,6 +57,7 @@ import android.view.Gravity; import android.view.RoundedCorner; import android.view.Surface; import android.view.View; +import android.view.WindowInsets; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.Toast; @@ -852,6 +853,21 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams); } + /** + * Applies forcibly show flag to taskbar window iff transient taskbar is unstashed. + */ + public void applyForciblyShownFlagWhileTransientTaskbarUnstashed(boolean shouldForceShow) { + if (!DisplayController.isTransientTaskbar(this)) { + return; + } + if (shouldForceShow) { + mWindowLayoutParams.forciblyShownTypes |= WindowInsets.Type.navigationBars(); + } else { + mWindowLayoutParams.forciblyShownTypes &= ~WindowInsets.Type.navigationBars(); + } + notifyUpdateLayoutParams(); + } + /** * Either adds or removes {@link WindowManager.LayoutParams#FLAG_NOT_FOCUSABLE} on the taskbar * window. If we're now focusable, also move nav buttons to a separate window above IME. @@ -958,8 +974,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { } } catch (NullPointerException - | ActivityNotFoundException - | SecurityException e) { + | ActivityNotFoundException + | SecurityException e) { Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT) .show(); Log.e(TAG, "Unable to launch. tag=" + info + " intent=" + intent, e); @@ -1053,6 +1069,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { /** * Called when we detect a long press in the nav region before passing the gesture slop. + * * @return Whether taskbar handled the long press, and thus should cancel the gesture. */ public boolean onLongPressToUnstashTaskbar() { @@ -1121,7 +1138,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { * Called when we detect a motion down or up/cancel in the nav region while stashed. * * @param animateForward Whether to animate towards the unstashed hint state or back to stashed. - * @param forceUnstash Whether we force the unstash hint. + * @param forceUnstash Whether we force the unstash hint. */ public void startTaskbarUnstashHint(boolean animateForward, boolean forceUnstash) { // TODO(b/270395798): Clean up forceUnstash after removing long-press unstashing code. diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index b5b453be82..a920dfaf6a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -1097,6 +1097,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_TRANSIENT_TASKBAR, !hasAnyFlag(FLAG_STASHED_IN_APP_AUTO)); } + mActivity.applyForciblyShownFlagWhileTransientTaskbarUnstashed(!isStashedInApp()); } private void notifyStashChange(boolean visible, boolean stashed) {