Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +24 −4 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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))); } /** Loading @@ -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 "{" Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt +36 −16 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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) Loading Loading @@ -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) } Loading Loading @@ -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) Loading Loading @@ -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() {} Loading @@ -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() } Loading Loading @@ -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 Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +24 −4 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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))); } /** Loading @@ -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 "{" Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt +36 −16 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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) Loading Loading @@ -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) } Loading Loading @@ -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) Loading Loading @@ -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() {} Loading @@ -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() } Loading Loading @@ -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 Loading