From dbe44ac48d79a8dacd0ae22fec296fda39066bf6 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Fri, 22 Apr 2016 19:50:13 -0700 Subject: [PATCH] Fix stuck windows in multi-window Window manager checked for the full display size so isHiddenFromUserLocked always returned true but activity manager and other places in window manager thought it would be visible which created a really weird state. Bug: 28344326 Change-Id: I98daefbcc64bf7a5196588c25d2cbc5ee046a77d --- .../com/android/server/wm/WindowState.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 19184fed4d4da..ae20ae38f6f1a 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2067,16 +2067,14 @@ final class WindowState implements WindowManagerPolicy.WindowState { } if (win.mAttrs.type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW && win.mAppToken != null && win.mAppToken.showForAllUsers) { - // Save some cycles by not calling getDisplayInfo unless it is an application - // window intended for all users. - final DisplayContent displayContent = win.getDisplayContent(); - if (displayContent == null) { - return true; - } - final DisplayInfo displayInfo = displayContent.getDisplayInfo(); - if (win.mFrame.left <= 0 && win.mFrame.top <= 0 - && win.mFrame.right >= displayInfo.appWidth - && win.mFrame.bottom >= displayInfo.appHeight) { + + // All window frames that are fullscreen extend above status bar, but some don't extend + // below navigation bar. Thus, check for display frame for top/left and stable frame for + // bottom right. + if (win.mFrame.left <= win.mDisplayFrame.left + && win.mFrame.top <= win.mDisplayFrame.top + && win.mFrame.right >= win.mStableFrame.right + && win.mFrame.bottom >= win.mStableFrame.bottom) { // Is a fullscreen window, like the clock alarm. Show to everyone. return false; }