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

Commit cd2ee6d8 authored by mattsziklay's avatar mattsziklay Committed by Matt Sziklay
Browse files

[Desktop Windowing] Rename Additional Windows Above Status Bar flag.

Renames the flag to "Enable Handle Input Fix" to better describe the
use of the flag, that being to fix input issues in the handle area. Also labels it as a bugfix flag.

Bug: 316186265
Test: m
Flag: NONE, renaming a flag
Change-Id: I7abafcdeca5d4c668d893b069c291d277e5b0359
parent 2ca7c59b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -86,10 +86,13 @@ flag {
}

flag {
    name: "enable_additional_windows_above_status_bar"
    name: "enable_handle_input_fix"
    namespace: "lse_desktop_experience"
    description: "Allows for additional windows tied to WindowDecoration to be layered between status bar and notification shade."
    description: "Enables using AdditionalSystemViewContainer to resolve handle input issues."
    bug: "316186265"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
+6 −6
Original line number Diff line number Diff line
@@ -405,7 +405,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
        final RunningTaskInfo oldTaskInfo = decoration.mTaskInfo;

        if (taskInfo.displayId != oldTaskInfo.displayId
                && !Flags.enableAdditionalWindowsAboveStatusBar()) {
                && !Flags.enableHandleInputFix()) {
            removeTaskFromEventReceiver(oldTaskInfo.displayId);
            incrementEventReceiverTasks(taskInfo.displayId);
        }
@@ -472,7 +472,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
        decoration.close();
        final int displayId = taskInfo.displayId;
        if (mEventReceiversByDisplay.contains(displayId)
                && !Flags.enableAdditionalWindowsAboveStatusBar()) {
                && !Flags.enableHandleInputFix()) {
            removeTaskFromEventReceiver(displayId);
        }
        // Remove the decoration from the cache last because WindowDecoration#close could still
@@ -1032,7 +1032,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
        relevantDecor.updateHoverAndPressStatus(ev);
        final int action = ev.getActionMasked();
        if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
            if (!mTransitionDragActive && !Flags.enableAdditionalWindowsAboveStatusBar()) {
            if (!mTransitionDragActive && !Flags.enableHandleInputFix()) {
                relevantDecor.closeHandleMenuIfNeeded(ev);
            }
        }
@@ -1075,7 +1075,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
                }
                final boolean shouldStartTransitionDrag =
                        relevantDecor.checkTouchEventInFocusedCaptionHandle(ev)
                                || Flags.enableAdditionalWindowsAboveStatusBar();
                                || Flags.enableHandleInputFix();
                if (dragFromStatusBarAllowed && shouldStartTransitionDrag) {
                    mTransitionDragActive = true;
                }
@@ -1342,7 +1342,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
        windowDecoration.setDragDetector(touchEventListener.mDragDetector);
        windowDecoration.relayout(taskInfo, startT, finishT,
                false /* applyStartTransactionOnDraw */, false /* shouldSetTaskPositionAndCrop */);
        if (!Flags.enableAdditionalWindowsAboveStatusBar()) {
        if (!Flags.enableHandleInputFix()) {
            incrementEventReceiverTasks(taskInfo.displayId);
        }
    }
@@ -1475,7 +1475,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel {
                        && Flags.enableDesktopWindowingImmersiveHandleHiding()) {
                    decor.onInsetsStateChanged(insetsState);
                }
                if (!Flags.enableAdditionalWindowsAboveStatusBar()) {
                if (!Flags.enableHandleInputFix()) {
                    // If status bar inset is visible, top task is not in immersive mode.
                    // This value is only needed when the App Handle input is being handled
                    // through the global input monitor (hence the flag check) to ignore gestures
+7 −7
Original line number Diff line number Diff line
@@ -516,7 +516,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
     */
    void disposeStatusBarInputLayer() {
        if (!isAppHandle(mWindowDecorViewHolder)
                || !Flags.enableAdditionalWindowsAboveStatusBar()) {
                || !Flags.enableHandleInputFix()) {
            return;
        }
        ((AppHandleViewHolder) mWindowDecorViewHolder).disposeStatusBarInputLayer();
@@ -612,7 +612,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
            }
            controlsElement.mAlignment = RelayoutParams.OccludingCaptionElement.Alignment.END;
            relayoutParams.mOccludingCaptionElements.add(controlsElement);
        } else if (isAppHandle && !Flags.enableAdditionalWindowsAboveStatusBar()) {
        } else if (isAppHandle && !Flags.enableHandleInputFix()) {
            // The focused decor (fullscreen/split) does not need to handle input because input in
            // the App Handle is handled by the InputMonitor in DesktopModeWindowDecorViewModel.
            // Note: This does not apply with the above flag enabled as the status bar input layer
@@ -1093,13 +1093,13 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
     */
    boolean checkTouchEventInFocusedCaptionHandle(MotionEvent ev) {
        if (isHandleMenuActive() || !isAppHandle(mWindowDecorViewHolder)
                || Flags.enableAdditionalWindowsAboveStatusBar()) {
                || Flags.enableHandleInputFix()) {
            return false;
        }
        // The status bar input layer can only receive input in handle coordinates to begin with,
        // so checking coordinates is unnecessary as input is always within handle bounds.
        if (isAppHandle(mWindowDecorViewHolder)
                && Flags.enableAdditionalWindowsAboveStatusBar()
                && Flags.enableHandleInputFix()
                && isCaptionVisible()) {
            return true;
        }
@@ -1136,7 +1136,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
     * @param ev the MotionEvent to compare
     */
    void checkTouchEvent(MotionEvent ev) {
        if (mResult.mRootView == null || Flags.enableAdditionalWindowsAboveStatusBar()) return;
        if (mResult.mRootView == null || Flags.enableHandleInputFix()) return;
        final View caption = mResult.mRootView.findViewById(R.id.desktop_mode_caption);
        final View handle = caption.findViewById(R.id.caption_handle);
        final boolean inHandle = !isHandleMenuActive()
@@ -1149,7 +1149,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
            // If the whole handle menu can be touched directly, rely on FLAG_WATCH_OUTSIDE_TOUCH.
            // This is for the case that some of the handle menu is underneath the status bar.
            if (isAppHandle(mWindowDecorViewHolder)
                    && !Flags.enableAdditionalWindowsAboveStatusBar()) {
                    && !Flags.enableHandleInputFix()) {
                mHandleMenu.checkMotionEvent(ev);
                closeHandleMenuIfNeeded(ev);
            }
@@ -1163,7 +1163,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
     * @param ev the MotionEvent to compare against.
     */
    void updateHoverAndPressStatus(MotionEvent ev) {
        if (mResult.mRootView == null || Flags.enableAdditionalWindowsAboveStatusBar()) return;
        if (mResult.mRootView == null || Flags.enableHandleInputFix()) return;
        final View handle = mResult.mRootView.findViewById(R.id.caption_handle);
        final boolean inHandle = !isHandleMenuActive()
                && checkTouchEventInFocusedCaptionHandle(ev);
+3 −3
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ class HandleMenu(
    private val taskInfo: RunningTaskInfo = parentDecor.mTaskInfo

    private val isViewAboveStatusBar: Boolean
        get() = (Flags.enableAdditionalWindowsAboveStatusBar() && !taskInfo.isFreeform)
        get() = (Flags.enableHandleInputFix() && !taskInfo.isFreeform)

    private val pillElevation: Int = loadDimensionPixelSize(
        R.dimen.desktop_mode_handle_menu_pill_elevation)
@@ -177,7 +177,7 @@ class HandleMenu(
        val x = handleMenuPosition.x.toInt()
        val y = handleMenuPosition.y.toInt()
        handleMenuViewContainer =
            if (!taskInfo.isFreeform && Flags.enableAdditionalWindowsAboveStatusBar()) {
            if (!taskInfo.isFreeform && Flags.enableHandleInputFix()) {
                AdditionalSystemViewContainer(
                    windowManagerWrapper = windowManagerWrapper,
                    taskId = taskInfo.taskId,
@@ -212,7 +212,7 @@ class HandleMenu(
            menuX = marginMenuStart
            menuY = marginMenuTop
        } else {
            if (Flags.enableAdditionalWindowsAboveStatusBar()) {
            if (Flags.enableHandleInputFix()) {
                // In a focused decor, we use global coordinates for handle menu. Therefore we
                // need to account for other factors like split stage and menu/handle width to
                // center the menu.
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ class HandleMenuImageButton(
    lateinit var taskInfo: RunningTaskInfo

    override fun onHoverEvent(motionEvent: MotionEvent): Boolean {
        if (Flags.enableAdditionalWindowsAboveStatusBar() || taskInfo.isFreeform) {
        if (Flags.enableHandleInputFix() || taskInfo.isFreeform) {
            return super.onHoverEvent(motionEvent)
        } else {
            return false
Loading