Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e25e5692 authored by Jorge Gil's avatar Jorge Gil Committed by Android (Google) Code Review
Browse files

Merge "Disable Maximize Menu when in desktop's immersive" into main

parents b54966a7 707aca0d
Loading
Loading
Loading
Loading
+24 −4
Original line number Diff line number Diff line
@@ -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 "{"
+36 −16
Original line number Diff line number Diff line
@@ -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