diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 7aeebbc2c585b..f7214868a4e24 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1364,9 +1364,8 @@ public class DisplayPolicy { applyKeyguardPolicy(win, imeTarget); // Check if the freeform window overlaps with the navigation bar area. - final boolean isOverlappingWithNavBar = isOverlappingWithNavBar(win); - if (isOverlappingWithNavBar && !mIsFreeformWindowOverlappingWithNavBar - && win.inFreeformWindowingMode()) { + if (!mIsFreeformWindowOverlappingWithNavBar && win.inFreeformWindowingMode() + && win.mActivityRecord != null && isOverlappingWithNavBar(win)) { mIsFreeformWindowOverlappingWithNavBar = true; } @@ -1454,7 +1453,7 @@ public class DisplayPolicy { // mode; if it's in gesture navigation mode, the navigation bar will be // NAV_BAR_FORCE_TRANSPARENT and its appearance won't be decided by overlapping // windows. - if (isOverlappingWithNavBar) { + if (isOverlappingWithNavBar(win)) { if (mNavBarColorWindowCandidate == null) { mNavBarColorWindowCandidate = win; addSystemBarColorApp(win); @@ -1482,7 +1481,7 @@ public class DisplayPolicy { addSystemBarColorApp(win); } } - if (isOverlappingWithNavBar && mNavBarColorWindowCandidate == null) { + if (isOverlappingWithNavBar(win) && mNavBarColorWindowCandidate == null) { mNavBarColorWindowCandidate = win; } } @@ -2645,7 +2644,7 @@ public class DisplayPolicy { @VisibleForTesting static boolean isOverlappingWithNavBar(@NonNull WindowState win) { - if (win.mActivityRecord == null || !win.isVisible()) { + if (!win.isVisible()) { return false; }