diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 8e9a214906458..41130812d6581 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1577,9 +1577,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; } @@ -1637,7 +1636,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); @@ -1665,7 +1664,7 @@ public class DisplayPolicy { addSystemBarColorApp(win); } } - if (isOverlappingWithNavBar && mNavBarColorWindowCandidate == null) { + if (isOverlappingWithNavBar(win) && mNavBarColorWindowCandidate == null) { mNavBarColorWindowCandidate = win; } } @@ -2858,7 +2857,7 @@ public class DisplayPolicy { @VisibleForTesting static boolean isOverlappingWithNavBar(@NonNull WindowState win) { - if (win.mActivityRecord == null || !win.isVisible()) { + if (!win.isVisible()) { return false; }