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

Commit caaaf49c authored by Adrian Roos's avatar Adrian Roos Committed by android-build-merger
Browse files

Merge "Screenshots broken for activities with dialog themes" into pi-dev

am: a52ddd98

Change-Id: I9ac4407f9fd30edd7ba53120d65e16df9264bc2c
parents 0a2c748a a52ddd98
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1728,6 +1728,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
                frame.set(win.mContainingFrame);
            }
            surfaceInsets = win.getAttrs().surfaceInsets;
            // XXX(b/72757033): These are insets relative to the window frame, but we're really
            // interested in the insets relative to the frame we chose in the if-blocks above.
            insets.set(win.mContentInsets);
            stableInsets.set(win.mStableInsets);
        }
@@ -2120,4 +2122,12 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
        }
        return stringName + ((mIsExiting) ? " mIsExiting=" : "");
    }

    Rect getLetterboxInsets() {
        if (mLetterbox != null) {
            return mLetterbox.getInsets();
        } else {
            return new Rect();
        }
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -67,6 +67,17 @@ public class Letterbox {
        mRight.setRect(t, inner.right, outer.top, outer.right, inner.bottom);
    }

    /**
     * Gets the insets between the outer and inner rects.
     */
    public Rect getInsets() {
        return new Rect(
                mLeft.getWidth(),
                mTop.getHeight(),
                mRight.getWidth(),
                mBottom.getHeight());
    }

    /**
     * Hides the letterbox.
     *
@@ -141,5 +152,13 @@ public class Letterbox {
                mSurface = null;
            }
        }

        public int getWidth() {
            return Math.max(0, mLastRight - mLastLeft);
        }

        public int getHeight() {
            return Math.max(0, mLastBottom - mLastTop);
        }
    }
}
+17 −9
Original line number Diff line number Diff line
@@ -281,17 +281,25 @@ class TaskSnapshotController {
    }

    private Rect getInsetsFromTaskBounds(WindowState state, Task task) {
        final Rect r = new Rect();
        r.set(state.getContentFrameLw());
        r.intersectUnchecked(state.getStableFrameLw());
        // XXX(b/72757033): These are insets relative to the window frame, but we're really
        // interested in the insets relative to the task bounds.
        Rect insets = minRect(state.mContentInsets, state.mStableInsets);
        insets = maxRect(insets, state.mAppToken.getLetterboxInsets());
        return insets;
    }

        final Rect taskBounds = task.getBounds();
    private Rect minRect(Rect rect1, Rect rect2) {
        return new Rect(Math.min(rect1.left, rect2.left),
                Math.min(rect1.top, rect2.top),
                Math.min(rect1.right, rect2.right),
                Math.min(rect1.bottom, rect2.bottom));
    }

        r.set(Math.max(0, r.left - taskBounds.left),
                Math.max(0, r.top - taskBounds.top),
                Math.max(0, taskBounds.right - r.right),
                Math.max(0, taskBounds.bottom - r.bottom));
        return r;
    private Rect maxRect(Rect rect1, Rect rect2) {
        return new Rect(Math.max(rect1.left, rect2.left),
                Math.max(rect1.top, rect2.top),
                Math.max(rect1.right, rect2.right),
                Math.max(rect1.bottom, rect2.bottom));
    }

    /**