diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index 1f8a829aaacd1..4512fbac38c1d 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -1105,15 +1105,18 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind : controller.getSystemBarsAppearance(); if (insets != null) { - final Insets systemBarInsets = insets.getInsets(WindowInsets.Type.systemBars()); - final Insets stableBarInsets = insets.getInsetsIgnoringVisibility( - WindowInsets.Type.systemBars()); final boolean clearCompatInsets = clearCompatInsets(attrs.type, attrs.flags, getResources().getConfiguration().windowConfiguration.getWindowingMode()); - mLastTopInset = clearCompatInsets ? 0 : systemBarInsets.top; - mLastBottomInset = clearCompatInsets ? 0 : systemBarInsets.bottom; - mLastRightInset = clearCompatInsets ? 0 : systemBarInsets.right; - mLastLeftInset = clearCompatInsets ? 0 : systemBarInsets.left; + final Insets stableBarInsets = insets.getInsetsIgnoringVisibility( + WindowInsets.Type.systemBars()); + final Insets systemInsets = clearCompatInsets + ? Insets.NONE + : Insets.min(insets.getInsets(WindowInsets.Type.systemBars() + | WindowInsets.Type.displayCutout()), stableBarInsets); + mLastTopInset = systemInsets.top; + mLastBottomInset = systemInsets.bottom; + mLastRightInset = systemInsets.right; + mLastLeftInset = systemInsets.left; // Don't animate if the presence of stable insets has changed, because that // indicates that the window was either just added and received them for the