Merge "ScreenDecor: Fix cutout overlay regression" into qt-dev

This commit is contained in:
Adrian Roos
2019-06-11 14:52:58 +00:00
committed by Android (Google) Code Review

View File

@@ -911,6 +911,7 @@ public class ScreenDecorations extends SystemUI implements Tunable,
if (shouldDrawCutout(getContext()) && hasCutout()) {
mBounds.addAll(mInfo.displayCutout.getBoundingRects());
localBounds(mBoundingRect);
updateGravity();
updateBoundingPath();
invalidate();
newVisible = VISIBLE;
@@ -961,6 +962,18 @@ public class ScreenDecorations extends SystemUI implements Tunable,
}
}
private void updateGravity() {
LayoutParams lp = getLayoutParams();
if (lp instanceof FrameLayout.LayoutParams) {
FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams) lp;
int newGravity = getGravity(mInfo.displayCutout);
if (flp.gravity != newGravity) {
flp.gravity = newGravity;
setLayoutParams(flp);
}
}
}
private boolean hasCutout() {
final DisplayCutout displayCutout = mInfo.displayCutout;
if (displayCutout == null) {
@@ -1007,21 +1020,25 @@ public class ScreenDecorations extends SystemUI implements Tunable,
}
private void localBounds(Rect out) {
final DisplayCutout displayCutout = mInfo.displayCutout;
DisplayCutout displayCutout = mInfo.displayCutout;
boundsFromDirection(displayCutout, getGravity(displayCutout), out);
}
private int getGravity(DisplayCutout displayCutout) {
if (mStart) {
if (displayCutout.getSafeInsetLeft() > 0) {
boundsFromDirection(displayCutout, Gravity.LEFT, out);
return Gravity.LEFT;
} else if (displayCutout.getSafeInsetTop() > 0) {
boundsFromDirection(displayCutout, Gravity.TOP, out);
return Gravity.TOP;
}
} else {
if (displayCutout.getSafeInsetRight() > 0) {
boundsFromDirection(displayCutout, Gravity.RIGHT, out);
return Gravity.RIGHT;
} else if (displayCutout.getSafeInsetBottom() > 0) {
boundsFromDirection(displayCutout, Gravity.BOTTOM, out);
return Gravity.BOTTOM;
}
}
return Gravity.NO_GRAVITY;
}
@Override