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

Commit 2487ce70 authored by Robert Carr's avatar Robert Carr
Browse files

Do not crop children to task bounds while resizing.

When we are resizing the task bounds might be smaller than
the stack bounds. We don't want to clip to the task bounds here,
so we use an expanded rectangle, making sure to expand it
large enough for giant surfaces.

Bug: 27676101
Change-Id: I1a324a474a89e4652ccd15ebd853b0b8815a48f5
parent 78740add
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2353,6 +2353,10 @@ final class WindowState implements WindowManagerPolicy.WindowState {
        return mDragResizing;
    }

    boolean isDockedResizing() {
        return mDragResizing && getResizeMode() == DRAG_RESIZE_MODE_DOCKED_DIVIDER;
    }

    void dump(PrintWriter pw, String prefix, boolean dumpAll) {
        final TaskStack stack = getStack();
        pw.print(prefix); pw.print("mDisplayId="); pw.print(getDisplayId());
+10 −2
Original line number Diff line number Diff line
@@ -1125,13 +1125,21 @@ class WindowStateAnimator {
        final int top = w.mYOffset + w.mFrame.top;

        // Initialize the decor rect to the entire frame.
        if (w.isDragResizing() && w.getResizeMode() == DRAG_RESIZE_MODE_DOCKED_DIVIDER) {
        if (w.isDockedResizing() ||
                (w.isChildWindow() && w.mAttachedWindow.isDockedResizing())) {

            // If we are resizing with the divider, the task bounds might be smaller than the
            // stack bounds. The system decor is used to clip to the task bounds, which we don't
            // want in this case in order to avoid holes.
            //
            // We take care to not shrink the width, for surfaces which are larger than
            // the display region. Of course this area will not eventually be visible
            // but if we truncate the width now, we will calculate incorrectly
            // when adjusting to the stack bounds.
            final DisplayInfo displayInfo = w.getDisplayContent().getDisplayInfo();
            mSystemDecorRect.set(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight);
            mSystemDecorRect.set(0, 0,
                    Math.max(width, displayInfo.logicalWidth),
                    Math.max(height, displayInfo.logicalHeight));
        } else {
            mSystemDecorRect.set(0, 0, width, height);
        }