summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorge Gil <jorgegil@google.com> 2024-10-15 18:20:40 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-10-15 18:20:40 +0000
commite25e5692ebd0a2c40a2c7229ee59b53c39c33010 (patch)
tree372a0ad09927eaad3a88e75e03cc3fa4a1bcecf8
parentb54966a752d4c5d5afbe7f12508e0080210eb75a (diff)
parent707aca0db2f67be76a288e8af61ffc823a0caa86 (diff)
Merge "Disable Maximize Menu when in desktop's immersive" into main
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java28
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt52
2 files changed, 60 insertions, 20 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
index 2c621b1f1a52..d3b7ca15856f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
@@ -514,8 +514,12 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
));
} else {
mWindowDecorViewHolder.bindData(new AppHeaderViewHolder.HeaderData(
- mTaskInfo, TaskInfoKt.getRequestingImmersive(mTaskInfo), inFullImmersive,
- hasGlobalFocus
+ mTaskInfo,
+ TaskInfoKt.getRequestingImmersive(mTaskInfo),
+ inFullImmersive,
+ hasGlobalFocus,
+ /* maximizeHoverEnabled= */ canOpenMaximizeMenu(
+ /* animatingTaskResizeOrReposition= */ false)
));
}
Trace.endSection();
@@ -1616,8 +1620,14 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
void setAnimatingTaskResizeOrReposition(boolean animatingTaskResizeOrReposition) {
if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_app_handle) return;
- asAppHeader(mWindowDecorViewHolder)
- .setAnimatingTaskResizeOrReposition(animatingTaskResizeOrReposition);
+ final boolean inFullImmersive =
+ mDesktopRepository.isTaskInFullImmersiveState(mTaskInfo.taskId);
+ asAppHeader(mWindowDecorViewHolder).bindData(new AppHeaderViewHolder.HeaderData(
+ mTaskInfo,
+ TaskInfoKt.getRequestingImmersive(mTaskInfo),
+ inFullImmersive,
+ isFocused(),
+ /* maximizeHoverEnabled= */ canOpenMaximizeMenu(animatingTaskResizeOrReposition)));
}
/**
@@ -1634,6 +1644,16 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
asAppHeader(mWindowDecorViewHolder).onMaximizeWindowHoverEnter();
}
+ private boolean canOpenMaximizeMenu(boolean animatingTaskResizeOrReposition) {
+ if (!Flags.enableFullyImmersiveInDesktop()) {
+ return !animatingTaskResizeOrReposition;
+ }
+ final boolean inImmersiveAndRequesting =
+ mDesktopRepository.isTaskInFullImmersiveState(mTaskInfo.taskId)
+ && TaskInfoKt.getRequestingImmersive(mTaskInfo);
+ return !animatingTaskResizeOrReposition && !inImmersiveAndRequesting;
+ }
+
@Override
public String toString() {
return "{"
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
index cf03b3f74dc7..d94391820d05 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
@@ -70,7 +70,7 @@ class AppHeaderViewHolder(
rootView: View,
onCaptionTouchListener: View.OnTouchListener,
onCaptionButtonClickListener: View.OnClickListener,
- onLongClickListener: OnLongClickListener,
+ private val onLongClickListener: OnLongClickListener,
onCaptionGenericMotionListener: View.OnGenericMotionListener,
appName: CharSequence,
appIconBitmap: Bitmap,
@@ -81,7 +81,8 @@ class AppHeaderViewHolder(
val taskInfo: RunningTaskInfo,
val isRequestingImmersive: Boolean,
val inFullImmersiveState: Boolean,
- val hasGlobalFocus: Boolean
+ val hasGlobalFocus: Boolean,
+ val enableMaximizeLongClick: Boolean,
) : Data()
private val decorThemeUtil = DecorThemeUtil(context)
@@ -160,19 +161,30 @@ class AppHeaderViewHolder(
}
override fun bindData(data: HeaderData) {
- bindData(data.taskInfo, data.isRequestingImmersive, data.inFullImmersiveState,
- data.hasGlobalFocus)
+ bindData(
+ data.taskInfo,
+ data.isRequestingImmersive,
+ data.inFullImmersiveState,
+ data.hasGlobalFocus,
+ data.enableMaximizeLongClick
+ )
}
private fun bindData(
taskInfo: RunningTaskInfo,
isRequestingImmersive: Boolean,
inFullImmersiveState: Boolean,
- hasGlobalFocus: Boolean
+ hasGlobalFocus: Boolean,
+ enableMaximizeLongClick: Boolean,
) {
if (DesktopModeFlags.ENABLE_THEMED_APP_HEADERS.isTrue()) {
- bindDataWithThemedHeaders(taskInfo, isRequestingImmersive, inFullImmersiveState,
- hasGlobalFocus)
+ bindDataWithThemedHeaders(
+ taskInfo,
+ isRequestingImmersive,
+ inFullImmersiveState,
+ hasGlobalFocus,
+ enableMaximizeLongClick,
+ )
} else {
bindDataLegacy(taskInfo, hasGlobalFocus)
}
@@ -215,7 +227,8 @@ class AppHeaderViewHolder(
taskInfo: RunningTaskInfo,
requestingImmersive: Boolean,
inFullImmersiveState: Boolean,
- hasGlobalFocus: Boolean
+ hasGlobalFocus: Boolean,
+ enableMaximizeLongClick: Boolean,
) {
val header = fillHeaderInfo(taskInfo, hasGlobalFocus)
val headerStyle = getHeaderStyle(header)
@@ -281,6 +294,16 @@ class AppHeaderViewHolder(
drawableInsets = closeDrawableInsets
)
}
+ if (!enableMaximizeLongClick) {
+ maximizeButtonView.cancelHoverAnimation()
+ }
+ maximizeButtonView.hoverDisabled = !enableMaximizeLongClick
+ maximizeWindowButton.onLongClickListener = if (enableMaximizeLongClick) {
+ onLongClickListener
+ } else {
+ // Disable long-click to open maximize menu when in immersive.
+ null
+ }
}
override fun onHandleMenuOpened() {}
@@ -291,14 +314,6 @@ class AppHeaderViewHolder(
}
}
- fun setAnimatingTaskResizeOrReposition(animatingTaskResizeOrReposition: Boolean) {
- // If animating a task resize or reposition, cancel any running hover animations
- if (animatingTaskResizeOrReposition) {
- maximizeButtonView.cancelHoverAnimation()
- }
- maximizeButtonView.hoverDisabled = animatingTaskResizeOrReposition
- }
-
fun onMaximizeWindowHoverExit() {
maximizeButtonView.cancelHoverAnimation()
}
@@ -364,6 +379,11 @@ class AppHeaderViewHolder(
private fun shouldShowExitFullImmersiveIcon(
requestingImmersive: Boolean,
inFullImmersiveState: Boolean
+ ): Boolean = isInFullImmersiveStateAndRequesting(requestingImmersive, inFullImmersiveState)
+
+ private fun isInFullImmersiveStateAndRequesting(
+ requestingImmersive: Boolean,
+ inFullImmersiveState: Boolean
): Boolean = Flags.enableFullyImmersiveInDesktop()
&& requestingImmersive && inFullImmersiveState