summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Maryam Dehaini <mdehaini@google.com> 2024-12-04 11:20:07 -0800
committer Maryam Dehaini <mdehaini@google.com> 2024-12-06 16:47:30 -0800
commit13b52853b868949c5c20a09fbe45d7639215477e (patch)
tree7b58aafd70c24b0c3a82ce9f21db6641e94edddb
parent122841e3e0e4188b2a4762c82c4c6c0caaa632de (diff)
Show correct icon for maximize button
Should show restore icon when task is in freeform immersive or when task is maximized. Bug: 380437450 Flag: EXEMPT bugfix Test: Maximize and enter immersive, checking icon Change-Id: I156a4f9e63c97c2761c7c5d0bf260a29f7e3b032
-rw-r--r--libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_button_dark.xml25
-rw-r--r--libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_or_maximize_exit_button_dark.xml (renamed from libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_exit_button_dark.xml)4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java5
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt39
4 files changed, 17 insertions, 56 deletions
diff --git a/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_button_dark.xml b/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_button_dark.xml
deleted file mode 100644
index f3800e05148e..000000000000
--- a/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_button_dark.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2024 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="24dp"
- android:width="24dp"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:fillColor="#000000"
- android:pathData="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"/>
-</vector>
diff --git a/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_exit_button_dark.xml b/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_or_maximize_exit_button_dark.xml
index 5260450e8a13..b6289e2d6dd7 100644
--- a/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_exit_button_dark.xml
+++ b/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_immersive_or_maximize_exit_button_dark.xml
@@ -21,6 +21,6 @@
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
- android:fillColor="@android:color/white"
- android:pathData="M240,840L240,720L120,720L120,640L320,640L320,840L240,840ZM640,840L640,640L840,640L840,720L720,720L720,840L640,840ZM120,320L120,240L240,240L240,120L320,120L320,320L120,320ZM640,320L640,120L720,120L720,240L840,240L840,320L640,320Z"/>
+ android:fillColor="@android:color/black"
+ android:pathData="M520,560L600,560L600,560ZM320,720Q287,720 263.5,696.5Q240,673 240,640L240,160Q240,127 263.5,103.5Q287,80 320,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,640Q880,673 856.5,696.5Q833,720 800,720L320,720ZM320,640L800,640Q800,640 800,640Q800,640 800,640L800,160Q800,160 800,160Q800,160 800,160L320,160Q320,160 320,160Q320,160 320,160L320,640Q320,640 320,640Q320,640 320,640ZM160,880Q127,880 103.5,856.5Q80,833 80,800L80,240L160,240L160,800Q160,800 160,800Q160,800 160,800L720,800L720,880L160,880ZM320,160L320,160Q320,160 320,160Q320,160 320,160L320,640Q320,640 320,640Q320,640 320,640L320,640Q320,640 320,640Q320,640 320,640L320,160Q320,160 320,160Q320,160 320,160Z"/>
</vector>
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 126317621caa..f6345cb5b4cc 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
@@ -98,6 +98,7 @@ import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.desktopmode.CaptionState;
import com.android.wm.shell.desktopmode.DesktopModeEventLogger;
+import com.android.wm.shell.desktopmode.DesktopModeUtils;
import com.android.wm.shell.desktopmode.DesktopUserRepositories;
import com.android.wm.shell.desktopmode.WindowDecorCaptionHandleRepository;
import com.android.wm.shell.shared.annotations.ShellBackgroundThread;
@@ -517,7 +518,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
} else {
mWindowDecorViewHolder.bindData(new AppHeaderViewHolder.HeaderData(
mTaskInfo,
- TaskInfoKt.getRequestingImmersive(mTaskInfo),
+ DesktopModeUtils.isTaskMaximized(mTaskInfo, mDisplayController),
inFullImmersive,
hasGlobalFocus,
/* maximizeHoverEnabled= */ canOpenMaximizeMenu(
@@ -1700,7 +1701,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
.isTaskInFullImmersiveState(mTaskInfo.taskId);
asAppHeader(mWindowDecorViewHolder).bindData(new AppHeaderViewHolder.HeaderData(
mTaskInfo,
- TaskInfoKt.getRequestingImmersive(mTaskInfo),
+ DesktopModeUtils.isTaskMaximized(mTaskInfo, mDisplayController),
inFullImmersive,
isFocused(),
/* maximizeHoverEnabled= */ canOpenMaximizeMenu(animatingTaskResizeOrReposition)));
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 d94391820d05..c9b9002160ad 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
@@ -79,7 +79,7 @@ class AppHeaderViewHolder(
data class HeaderData(
val taskInfo: RunningTaskInfo,
- val isRequestingImmersive: Boolean,
+ val isTaskMaximized: Boolean,
val inFullImmersiveState: Boolean,
val hasGlobalFocus: Boolean,
val enableMaximizeLongClick: Boolean,
@@ -163,7 +163,7 @@ class AppHeaderViewHolder(
override fun bindData(data: HeaderData) {
bindData(
data.taskInfo,
- data.isRequestingImmersive,
+ data.isTaskMaximized,
data.inFullImmersiveState,
data.hasGlobalFocus,
data.enableMaximizeLongClick
@@ -172,7 +172,7 @@ class AppHeaderViewHolder(
private fun bindData(
taskInfo: RunningTaskInfo,
- isRequestingImmersive: Boolean,
+ isTaskMaximized: Boolean,
inFullImmersiveState: Boolean,
hasGlobalFocus: Boolean,
enableMaximizeLongClick: Boolean,
@@ -180,7 +180,7 @@ class AppHeaderViewHolder(
if (DesktopModeFlags.ENABLE_THEMED_APP_HEADERS.isTrue()) {
bindDataWithThemedHeaders(
taskInfo,
- isRequestingImmersive,
+ isTaskMaximized,
inFullImmersiveState,
hasGlobalFocus,
enableMaximizeLongClick,
@@ -225,7 +225,7 @@ class AppHeaderViewHolder(
private fun bindDataWithThemedHeaders(
taskInfo: RunningTaskInfo,
- requestingImmersive: Boolean,
+ isTaskMaximized: Boolean,
inFullImmersiveState: Boolean,
hasGlobalFocus: Boolean,
enableMaximizeLongClick: Boolean,
@@ -283,7 +283,7 @@ class AppHeaderViewHolder(
drawableInsets = maximizeDrawableInsets
)
)
- setIcon(getMaximizeButtonIcon(requestingImmersive, inFullImmersiveState))
+ setIcon(getMaximizeButtonIcon(isTaskMaximized, inFullImmersiveState))
}
// Close button.
closeWindowButton.apply {
@@ -358,34 +358,19 @@ class AppHeaderViewHolder(
@DrawableRes
private fun getMaximizeButtonIcon(
- requestingImmersive: Boolean,
+ isTaskMaximized: Boolean,
inFullImmersiveState: Boolean
): Int = when {
- shouldShowEnterFullImmersiveIcon(requestingImmersive, inFullImmersiveState) -> {
- R.drawable.decor_desktop_mode_immersive_button_dark
- }
- shouldShowExitFullImmersiveIcon(requestingImmersive, inFullImmersiveState) -> {
- R.drawable.decor_desktop_mode_immersive_exit_button_dark
+ shouldShowExitFullImmersiveOrMaximizeIcon(isTaskMaximized, inFullImmersiveState) -> {
+ R.drawable.decor_desktop_mode_immersive_or_maximize_exit_button_dark
}
else -> R.drawable.decor_desktop_mode_maximize_button_dark
}
- private fun shouldShowEnterFullImmersiveIcon(
- requestingImmersive: Boolean,
- inFullImmersiveState: Boolean
- ): Boolean = Flags.enableFullyImmersiveInDesktop()
- && requestingImmersive && !inFullImmersiveState
-
- private fun shouldShowExitFullImmersiveIcon(
- requestingImmersive: Boolean,
- inFullImmersiveState: Boolean
- ): Boolean = isInFullImmersiveStateAndRequesting(requestingImmersive, inFullImmersiveState)
-
- private fun isInFullImmersiveStateAndRequesting(
- requestingImmersive: Boolean,
+ private fun shouldShowExitFullImmersiveOrMaximizeIcon(
+ isTaskMaximized: Boolean,
inFullImmersiveState: Boolean
- ): Boolean = Flags.enableFullyImmersiveInDesktop()
- && requestingImmersive && inFullImmersiveState
+ ): Boolean = (Flags.enableFullyImmersiveInDesktop() && inFullImmersiveState) || isTaskMaximized
private fun getHeaderStyle(header: Header): HeaderStyle {
return HeaderStyle(