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

Commit 32cacc3a authored by Wale Ogunwale's avatar Wale Ogunwale Committed by Android (Google) Code Review
Browse files

Merge "Increased window resize handle to 30dp."

parents 8de78eba 231b06e7
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ import static android.app.ActivityManager.HOME_STACK_ID;

import static com.android.server.wm.WindowManagerService.DEBUG_VISIBILITY;
import static com.android.server.wm.WindowManagerService.TAG;
import static com.android.server.wm.WindowState.RESIZE_HANDLE_WIDTH_IN_DP;

import android.content.res.Configuration;
import android.graphics.Rect;
import android.graphics.Region;
import android.util.DisplayMetrics;
@@ -72,6 +72,7 @@ class DisplayContent {
    boolean mDisplayScalingDisabled;
    private final DisplayInfo mDisplayInfo = new DisplayInfo();
    private final Display mDisplay;
    private final DisplayMetrics mDisplayMetrics = new DisplayMetrics();

    Rect mBaseDisplayRect = new Rect();
    Rect mContentRect = new Rect();
@@ -82,11 +83,11 @@ class DisplayContent {
    final boolean isDefaultDisplay;

    /** Window tokens that are in the process of exiting, but still on screen for animations. */
    final ArrayList<WindowToken> mExitingTokens = new ArrayList<WindowToken>();
    final ArrayList<WindowToken> mExitingTokens = new ArrayList<>();

    /** Array containing all TaskStacks on this display.  Array
     * is stored in display order with the current bottom stack at 0. */
    private final ArrayList<TaskStack> mStacks = new ArrayList<TaskStack>();
    private final ArrayList<TaskStack> mStacks = new ArrayList<>();

    /** A special TaskStack with id==HOME_STACK_ID that moves to the bottom whenever any TaskStack
     * (except a future lockscreen TaskStack) moves to the top. */
@@ -117,6 +118,7 @@ class DisplayContent {
        mDisplay = display;
        mDisplayId = display.getDisplayId();
        display.getDisplayInfo(mDisplayInfo);
        display.getMetrics(mDisplayMetrics);
        isDefaultDisplay = mDisplayId == Display.DEFAULT_DISPLAY;
        mService = service;
    }
@@ -137,6 +139,10 @@ class DisplayContent {
        return mDisplayInfo;
    }

    DisplayMetrics getDisplayMetrics() {
        return mDisplayMetrics;
    }

    /**
     * Returns true if the specified UID has access to this display.
     */
@@ -174,6 +180,7 @@ class DisplayContent {

    void updateDisplayInfo() {
        mDisplay.getDisplayInfo(mDisplayInfo);
        mDisplay.getMetrics(mDisplayMetrics);
        for (int i = mStacks.size() - 1; i >= 0; --i) {
            mStacks.get(i).updateDisplayInfo(null);
        }
@@ -247,7 +254,7 @@ class DisplayContent {
     * falls within. Returns -1 if the touch doesn't fall into a resizing area.
     */
    int taskIdForControlPoint(int x, int y) {
        final int delta = calculatePixelFromDp(WindowState.RESIZE_HANDLE_WIDTH_IN_DP);
        final int delta = mService.dipToPixel(RESIZE_HANDLE_WIDTH_IN_DP, mDisplayMetrics);
        for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
            TaskStack stack = mStacks.get(stackNdx);
            if (!stack.allowTaskResize()) {
@@ -275,17 +282,10 @@ class DisplayContent {
        return -1;
    }

    private int calculatePixelFromDp(int dp) {
        final Configuration serviceConfig = mService.mCurConfiguration;
        // TODO(multidisplay): Update Dp to that of display stack is on.
        final float density = serviceConfig.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
        return (int)(dp * density);
    }

    void setTouchExcludeRegion(Task focusedTask) {
        mTouchExcludeRegion.set(mBaseDisplayRect);
        WindowList windows = getWindowList();
        final int delta = calculatePixelFromDp(WindowState.RESIZE_HANDLE_WIDTH_IN_DP);
        final int delta = mService.dipToPixel(RESIZE_HANDLE_WIDTH_IN_DP, mDisplayMetrics);
        for (int i = windows.size() - 1; i >= 0; --i) {
            final WindowState win = windows.get(i);
            final Task task = win.mAppToken != null ? win.getTask() : null;
+5 −10
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import static android.app.ActivityManager.FREEFORM_WORKSPACE_STACK_ID;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static com.android.server.wm.WindowManagerService.DEBUG_TASK_POSITIONING;
import static com.android.server.wm.WindowManagerService.SHOW_TRANSACTIONS;
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.graphics.Point;
@@ -31,7 +33,6 @@ import android.os.Process;
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.util.Slog;
import android.util.TypedValue;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.InputChannel;
@@ -247,7 +248,7 @@ class TaskPositioner implements DimLayer.DimLayerUser {
        mService.pauseRotationLocked();

        mDimLayer = new DimLayer(mService, this, mDisplay.getDisplayId());
        mSideMargin = (int)dipToPx(SIDE_MARGIN_DIP);
        mSideMargin = mService.dipToPixel(SIDE_MARGIN_DIP, mDisplayMetrics);
    }

    void unregister() {
@@ -331,10 +332,8 @@ class TaskPositioner implements DimLayer.DimLayerUser {
            // This is a resizing operation.
            final int deltaX = Math.round(x - mStartDragX);
            final int deltaY = Math.round(y - mStartDragY);
            // TODO: fix the min sizes when we have mininum width/height support,
            //       use hard-coded min sizes for now.
            final int minSizeX = (int)(dipToPx(96));
            final int minSizeY = (int)(dipToPx(64));
            final int minSizeX = mService.dipToPixel(MINIMUM_VISIBLE_WIDTH_IN_DP, mDisplayMetrics);
            final int minSizeY = mService.dipToPixel(MINIMUM_VISIBLE_HEIGHT_IN_DP, mDisplayMetrics);
            int left = mWindowOriginalBounds.left;
            int top = mWindowOriginalBounds.top;
            int right = mWindowOriginalBounds.right;
@@ -431,8 +430,4 @@ class TaskPositioner implements DimLayer.DimLayerUser {
                * WindowManagerService.TYPE_LAYER_MULTIPLIER
                + WindowManagerService.TYPE_LAYER_OFFSET;
    }

    private float dipToPx(float dip) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, mDisplayMetrics);
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -9863,6 +9863,10 @@ public class WindowManagerService extends IWindowManager.Stub
        }
    }

    static int dipToPixel(int dip, DisplayMetrics displayMetrics) {
        return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, displayMetrics);
    }

    private final class LocalService extends WindowManagerInternal {
        @Override
        public void requestTraversalFromDisplayManager() {
+13 −14
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.server.wm;

import static android.app.ActivityManager.FREEFORM_WORKSPACE_STACK_ID;
import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW;
import static android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
@@ -81,12 +80,14 @@ final class WindowState implements WindowManagerPolicy.WindowState {
    static final String TAG = "WindowState";

    // The minimal size of a window within the usable area of the freeform stack.
    private static final int MINIMUM_VISIBLE_WIDTH_IN_DP = 48;
    private static final int MINIMUM_VISIBLE_HEIGHT_IN_DP = 32;
    // TODO(multi-window): fix the min sizes when we have mininum width/height support,
    //                     use hard-coded min sizes for now.
    static final int MINIMUM_VISIBLE_WIDTH_IN_DP = 48;
    static final int MINIMUM_VISIBLE_HEIGHT_IN_DP = 32;

    // The thickness of a window resize handle outside the window bounds on the free form workspace
    // to capture touch events in that area.
    static final int RESIZE_HANDLE_WIDTH_IN_DP = 10;
    static final int RESIZE_HANDLE_WIDTH_IN_DP = 30;

    static final boolean BOUNDS_FOR_TOUCH = true;

@@ -689,8 +690,11 @@ final class WindowState implements WindowManagerPolicy.WindowState {
            // into a usable area..
            final int height = Math.min(mFrame.height(), mContentFrame.height());
            final int width = Math.min(mContentFrame.width(), mFrame.width());
            final int minVisibleHeight = calculatePixelFromDp(MINIMUM_VISIBLE_HEIGHT_IN_DP);
            final int minVisibleWidth = calculatePixelFromDp(MINIMUM_VISIBLE_WIDTH_IN_DP);
            final DisplayMetrics displayMetrics = getDisplayContent().getDisplayMetrics();
            final int minVisibleHeight =
                    mService.dipToPixel(MINIMUM_VISIBLE_HEIGHT_IN_DP, displayMetrics);
            final int minVisibleWidth =
                    mService.dipToPixel(MINIMUM_VISIBLE_WIDTH_IN_DP, displayMetrics);
            final int top = Math.max(mContentFrame.top,
                    Math.min(mFrame.top, mContentFrame.bottom - minVisibleHeight));
            final int left = Math.max(mContentFrame.left + minVisibleWidth - width,
@@ -941,7 +945,9 @@ final class WindowState implements WindowManagerPolicy.WindowState {
            task.getBounds(bounds);
            if (forTouch == BOUNDS_FOR_TOUCH) {
                if (task.inFreeformWorkspace()) {
                    final int delta = calculatePixelFromDp(RESIZE_HANDLE_WIDTH_IN_DP);
                    final DisplayMetrics displayMetrics = getDisplayContent().getDisplayMetrics();
                    final int delta =
                            mService.dipToPixel(RESIZE_HANDLE_WIDTH_IN_DP, displayMetrics);
                    bounds.inset(-delta, -delta);
                }
            }
@@ -1682,13 +1688,6 @@ final class WindowState implements WindowManagerPolicy.WindowState {
        return mService.mTaskPositioner != null && mService.mTaskPositioner.isTaskResizing(task);
    }

    private int calculatePixelFromDp(int dp) {
        final Configuration serviceConfig = mService.mCurConfiguration;
        // TODO(multidisplay): Update Dp to that of display stack is on.
        final float density = serviceConfig.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
        return (int)(dp * density);
    }

    void dump(PrintWriter pw, String prefix, boolean dumpAll) {
        final TaskStack stack = getStack();
        pw.print(prefix); pw.print("mDisplayId="); pw.print(getDisplayId());