diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 5bd8dd3caa7c4..664c0c43c1a7f 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1527,9 +1527,14 @@ public class DisplayPolicy { } } else if (win.isDimming()) { if (mStatusBar != null) { - if (addStatusBarAppearanceRegionsForDimmingWindow( - win.mAttrs.insetsFlags.appearance & APPEARANCE_LIGHT_STATUS_BARS, - mStatusBar.getFrame(), win.getBounds(), win.getFrame())) { + // If the dim window is below status bar window, we should update the appearance + // region if needed. Otherwise, leave it as it is. + final int statusBarLayer = mStatusBar.mToken.getWindowLayerFromType(); + final int targetWindowLayer = win.mToken.getWindowLayerFromType(); + if (targetWindowLayer < statusBarLayer + && addStatusBarAppearanceRegionsForDimmingWindow( + win.mAttrs.insetsFlags.appearance & APPEARANCE_LIGHT_STATUS_BARS, + mStatusBar.getFrame(), win.getBounds(), win.getFrame())) { addSystemBarColorApp(win); } }