Merge "Don't set insets if task frame doesn't fit the screen" into nyc-dev

This commit is contained in:
Andrii Kulian
2016-03-27 23:40:01 +00:00
committed by Android (Google) Code Review

View File

@@ -799,38 +799,44 @@ final class WindowState implements WindowManagerPolicy.WindowState {
mContentInsets.setEmpty(); mContentInsets.setEmpty();
mVisibleInsets.setEmpty(); mVisibleInsets.setEmpty();
} else { } else {
// Using mContentInsets as a temp rect. It is safe because we're setting it below.
getDisplayContent().getLogicalDisplayRect(mContentInsets);
// Override right and/or bottom insets in case if the frame doesn't fit the screen in
// non-fullscreen mode.
boolean overrideRightInset = !fullscreenTask && mFrame.right > mContentInsets.right;
boolean overrideBottomInset = !fullscreenTask && mFrame.bottom > mContentInsets.bottom;
mContentInsets.set(mContentFrame.left - frame.left, mContentInsets.set(mContentFrame.left - frame.left,
mContentFrame.top - frame.top, mContentFrame.top - frame.top,
frame.right - mContentFrame.right, overrideRightInset ? 0 : frame.right - mContentFrame.right,
frame.bottom - mContentFrame.bottom); overrideBottomInset ? 0 : frame.bottom - mContentFrame.bottom);
mVisibleInsets.set(mVisibleFrame.left - frame.left, mVisibleInsets.set(mVisibleFrame.left - frame.left,
mVisibleFrame.top - frame.top, mVisibleFrame.top - frame.top,
frame.right - mVisibleFrame.right, overrideRightInset ? 0 : frame.right - mVisibleFrame.right,
frame.bottom - mVisibleFrame.bottom); overrideBottomInset ? 0 : frame.bottom - mVisibleFrame.bottom);
mStableInsets.set(Math.max(mStableFrame.left - frame.left, 0), mStableInsets.set(Math.max(mStableFrame.left - frame.left, 0),
Math.max(mStableFrame.top - frame.top, 0), Math.max(mStableFrame.top - frame.top, 0),
Math.max(frame.right - mStableFrame.right, 0), overrideRightInset ? 0 : Math.max(frame.right - mStableFrame.right, 0),
Math.max(frame.bottom - mStableFrame.bottom, 0)); overrideBottomInset ? 0 : Math.max(frame.bottom - mStableFrame.bottom, 0));
} }
if (!mInsetFrame.isEmpty()) { if (!mInsetFrame.isEmpty()) {
mContentFrame.set(mFrame); mContentFrame.set(mFrame);
mContentFrame.top += mContentInsets.top; mContentFrame.top += mContentInsets.top;
mContentFrame.bottom += mContentInsets.bottom; mContentFrame.bottom -= mContentInsets.bottom;
mContentFrame.left += mContentInsets.left; mContentFrame.left += mContentInsets.left;
mContentFrame.right += mContentInsets.right; mContentFrame.right -= mContentInsets.right;
mVisibleFrame.set(mFrame); mVisibleFrame.set(mFrame);
mVisibleFrame.top += mVisibleInsets.top; mVisibleFrame.top += mVisibleInsets.top;
mVisibleFrame.bottom += mVisibleInsets.bottom; mVisibleFrame.bottom -= mVisibleInsets.bottom;
mVisibleFrame.left += mVisibleInsets.left; mVisibleFrame.left += mVisibleInsets.left;
mVisibleFrame.right += mVisibleInsets.right; mVisibleFrame.right -= mVisibleInsets.right;
mStableFrame.set(mFrame); mStableFrame.set(mFrame);
mStableFrame.top += mStableInsets.top; mStableFrame.top += mStableInsets.top;
mStableFrame.bottom += mStableInsets.bottom; mStableFrame.bottom -= mStableInsets.bottom;
mStableFrame.left += mStableInsets.left; mStableFrame.left += mStableInsets.left;
mStableFrame.right += mStableInsets.right; mStableFrame.right -= mStableInsets.right;
} }
mCompatFrame.set(mFrame); mCompatFrame.set(mFrame);
if (mEnforceSizeCompat) { if (mEnforceSizeCompat) {
@@ -864,7 +870,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
+ "): frame=" + mFrame.toShortString() + "): frame=" + mFrame.toShortString()
+ " ci=" + mContentInsets.toShortString() + " ci=" + mContentInsets.toShortString()
+ " vi=" + mVisibleInsets.toShortString() + " vi=" + mVisibleInsets.toShortString()
+ " vi=" + mStableInsets.toShortString() + " si=" + mStableInsets.toShortString()
+ " of=" + mOutsets.toShortString()); + " of=" + mOutsets.toShortString());
} }