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

Commit 485d9c42 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix 2 input issues regarding drag-move/drag-resize."

parents bb90dfbc 07544cd8
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -268,11 +268,11 @@ final class InputMonitor {
            }
            final InputWindowHandle dragWindowHandle =
                    mService.mDragDropController.getInputWindowHandleLocked();
            if (dragWindowHandle != null) {
                addInputWindowHandle(dragWindowHandle);
            } else {
            if (dragWindowHandle == null) {
                Slog.w(TAG_WM, "Drag is in progress but there is no "
                        + "drag window handle.");
            } else if (dragWindowHandle.displayId == mDisplayId) {
                addInputWindowHandle(dragWindowHandle);
            }
        }

@@ -283,11 +283,11 @@ final class InputMonitor {
            }
            final InputWindowHandle dragWindowHandle =
                    mService.mTaskPositioningController.getDragWindowHandleLocked();
            if (dragWindowHandle != null) {
                addInputWindowHandle(dragWindowHandle);
            } else {
            if (dragWindowHandle == null) {
                Slog.e(TAG_WM,
                        "Repositioning is in progress but there is no drag window handle.");
            } else if (dragWindowHandle.displayId == mDisplayId) {
                addInputWindowHandle(dragWindowHandle);
            }
        }

+9 −5
Original line number Diff line number Diff line
@@ -19,17 +19,17 @@ package com.android.server.wm;
import static android.app.ActivityTaskManager.RESIZE_MODE_USER;
import static android.app.ActivityTaskManager.RESIZE_MODE_USER_FORCED;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;

import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_FREEFORM;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TASK_POSITIONING;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerService.dipToPixel;
import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_FREEFORM;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_WIDTH_IN_DP;

import android.annotation.IntDef;
import android.app.IActivityManager;
import android.app.IActivityTaskManager;
import android.graphics.Point;
import android.graphics.Rect;
@@ -51,7 +51,6 @@ import android.view.WindowManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.input.InputApplicationHandle;
import com.android.server.input.InputWindowHandle;
import com.android.server.wm.WindowManagerService.H;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -209,7 +208,6 @@ class TaskPositioner {
                    // Post back to WM to handle clean-ups. We still need the input
                    // event handler for the last finishInputEvent()!
                    mService.mTaskPositioningController.finishTaskPositioning();
                    mTask.getDisplayContent().getInputMonitor().updateInputWindowsLw(true /*force*/);
                }
                handled = true;
            } catch (Exception e) {
@@ -237,7 +235,7 @@ class TaskPositioner {
    }

    /**
     * @param display The Display that the window being dragged is on.
     * @param displayContent The Display that the window being dragged is on.
     */
    void register(DisplayContent displayContent) {
        final Display display = displayContent.getDisplay();
@@ -303,6 +301,9 @@ class TaskPositioner {
        }
        mDisplayContent.pauseRotationLocked();

        // Notify InputMonitor to take mDragWindowHandle.
        mDisplayContent.getInputMonitor().updateInputWindowsLw(true /*force*/);

        mSideMargin = dipToPixel(SIDE_MARGIN_DIP, mDisplayMetrics);
        mMinVisibleWidth = dipToPixel(MINIMUM_VISIBLE_WIDTH_IN_DP, mDisplayMetrics);
        mMinVisibleHeight = dipToPixel(MINIMUM_VISIBLE_HEIGHT_IN_DP, mDisplayMetrics);
@@ -334,6 +335,9 @@ class TaskPositioner {
        mDragApplicationHandle = null;
        mDragEnded = true;

        // Notify InputMonitor to remove mDragWindowHandle.
        mDisplayContent.getInputMonitor().updateInputWindowsLw(true /*force*/);

        // Resume rotations after a drag.
        if (DEBUG_ORIENTATION) {
            Slog.d(TAG, "Resuming rotation after re-position");
+2 −5
Original line number Diff line number Diff line
@@ -20,14 +20,13 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TASK_POSITION
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;

import android.annotation.Nullable;
import android.app.IActivityManager;
import android.app.IActivityTaskManager;
import android.os.RemoteException;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Slog;
import android.view.Display;
import android.view.IWindow;

import com.android.internal.annotations.GuardedBy;
import com.android.server.input.InputManagerService;
import com.android.server.input.InputWindowHandle;
@@ -124,10 +123,8 @@ class TaskPositioningController {
            return false;
        }

        Display display = displayContent.getDisplay();
        mTaskPositioner = TaskPositioner.create(mService);
        mTaskPositioner.register(displayContent);
        displayContent.getInputMonitor().updateInputWindowsLw(true /*force*/);

        // We need to grab the touch focus so that the touch events during the
        // resizing/scrolling are not sent to the app. 'win' is the main window