diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index d0457b08aa3460f27ee5d01406e10ea6a7fa988a..1108c7752777ddbbd0358d87d09ef1befa1ae989 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1498,11 +1498,15 @@ public class DisplayPolicy { statusBarBottom); } - sTmpRect.set(windowFrames.mFrame); - sTmpRect.intersect(displayFrames.mDisplayCutoutSafe); - sTmpRect.top = windowFrames.mFrame.top; // Ignore top display cutout inset - sTmpRect.bottom = statusBarBottom; // Use collapsed status bar size - contentFrame.set(sTmpRect); + final InsetsState state = displayFrames.mInsetsState; + sTmpRect.set(displayFrames.mDisplayCutoutSafe); + // The status bar content can extend into regular display cutout insets but not + // waterfall insets. + sTmpRect.top = Math.max(state.getDisplayCutout().getWaterfallInsets().top, 0); + + contentFrame.set(windowFrames.mFrame); + contentFrame.intersect(sTmpRect); + contentFrame.bottom = statusBarBottom; // Use collapsed status bar size } private int layoutNavigationBar(DisplayFrames displayFrames, Rect contentFrame) {