From f95b89a0971fdfedec9004924615f08d87a6168c Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Thu, 10 Oct 2013 22:10:42 -0400 Subject: [PATCH] Fix dock rect calculation when nav is translucent. Make sure the dock rect in PWM takes the nav bar height into account when translucent. This forms the basis of many other window calculations, and has multiple downstream effects. Fixing this exposed the fact that the Keyguard was not allowed to fall into the LAYOUT_HIDE_NAV codepath (since it's not an app window) - so add TYPE_KEYGUARD to that path. Bug:11157555 Change-Id: I6b1fc4da973a246b80ec108a561e06f6d8a6a92b --- .../android/internal/policy/impl/PhoneWindowManager.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 225bb94ea2033..9d5f50bc4edde 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -2737,7 +2737,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { - mNavigationBarHeightForRotation[displayRotation]; mTmpNavigationFrame.set(0, top, displayWidth, displayHeight - overscanBottom); mStableBottom = mStableFullscreenBottom = mTmpNavigationFrame.top; - if (transientNavBarShowing || navTranslucent) { + if (transientNavBarShowing) { mNavigationBarController.setBarShowingLw(true); } else if (navVisible) { mNavigationBarController.setBarShowingLw(true); @@ -2761,7 +2761,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { - mNavigationBarWidthForRotation[displayRotation]; mTmpNavigationFrame.set(left, 0, displayWidth - overscanRight, displayHeight); mStableRight = mStableFullscreenRight = mTmpNavigationFrame.left; - if (transientNavBarShowing || navTranslucent) { + if (transientNavBarShowing) { mNavigationBarController.setBarShowingLw(true); } else if (navVisible) { mNavigationBarController.setBarShowingLw(true); @@ -3074,8 +3074,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { + mOverscanScreenHeight; } else if (canHideNavigationBar() && (sysUiFl & View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) != 0 - && attrs.type >= WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW - && attrs.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW) { + && (attrs.type == WindowManager.LayoutParams.TYPE_KEYGUARD || ( + attrs.type >= WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW + && attrs.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW))) { // Asking for layout as if the nav bar is hidden, lets the // application extend into the unrestricted overscan screen area. We // only do this for application windows to ensure no window that