Don't apply overscan insets to freeform windows.
Overscan gets applied when window frame is outside of the display frame. This is a natural situation for freeform windows, so they should not receive the overscan inset. Applying overscan insets causes the application content to get squashed, when we resize the freeform window and part of it is outside of the display. Bug: 26009343 Change-Id: Ib614fb8c7170c3b6d69614b813674853e1204eef
This commit is contained in:
@@ -751,15 +751,16 @@ final class WindowState implements WindowManagerPolicy.WindowState {
|
||||
Math.min(mStableFrame.bottom, frame.bottom));
|
||||
}
|
||||
|
||||
mOverscanInsets.set(Math.max(mOverscanFrame.left - frame.left, 0),
|
||||
Math.max(mOverscanFrame.top - frame.top, 0),
|
||||
Math.max(frame.right - mOverscanFrame.right, 0),
|
||||
Math.max(frame.bottom - mOverscanFrame.bottom, 0));
|
||||
|
||||
|
||||
if (!inFreeformWorkspace()) {
|
||||
// Freeform windows can be positioned outside of the display frame, but that is not a
|
||||
// reason to provide them with overscan insets.
|
||||
mOverscanInsets.set(Math.max(mOverscanFrame.left - frame.left, 0),
|
||||
Math.max(mOverscanFrame.top - frame.top, 0),
|
||||
Math.max(frame.right - mOverscanFrame.right, 0),
|
||||
Math.max(frame.bottom - mOverscanFrame.bottom, 0));
|
||||
}
|
||||
|
||||
if (mAttrs.type == TYPE_DOCK_DIVIDER) {
|
||||
|
||||
// For the docked divider, we calculate the stable insets like a full-screen window
|
||||
// so it can use it to calculate the snap positions.
|
||||
mStableInsets.set(Math.max(mStableFrame.left - mDisplayFrame.left, 0),
|
||||
|
||||
Reference in New Issue
Block a user