diff options
author | Dianne Hackborn <hackbod@google.com> | 2013-01-09 18:31:37 -0800 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2013-01-09 18:51:51 -0800 |
commit | e62fa825794967c2067be86e8b57b83f4b82ee1c (patch) | |
tree | e61d6cd3995b98d28fb26c24becd34a267176f85 /policy/src/com/android/internal | |
parent | d29f2d263af9a3017799d3098ed208a49c5ecc69 (diff) | |
download | frameworks_base-e62fa825794967c2067be86e8b57b83f4b82ee1c.zip frameworks_base-e62fa825794967c2067be86e8b57b83f4b82ee1c.tar.gz frameworks_base-e62fa825794967c2067be86e8b57b83f4b82ee1c.tar.bz2 |
Merge from master: fix issue #7966357: Super lights out mode vs. volume dialog
The volume panel now forces us out of the UI modes while it
is up.
Change-Id: If39fa33b1c52579bf5d376ce4722408cee3ca951
Diffstat (limited to 'policy/src/com/android/internal')
-rwxr-xr-x | policy/src/com/android/internal/policy/impl/PhoneWindowManager.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 242fb97..fb515ac 100755 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -412,6 +412,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean mForceStatusBar; boolean mForceStatusBarFromKeyguard; boolean mHideLockScreen; + boolean mForcingShowNavBar; + int mForcingShowNavBarLayer; // States of keyguard dismiss. private static final int DISMISS_KEYGUARD_NONE = 0; // Keyguard not being dismissed. @@ -2936,6 +2938,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { mTopFullscreenOpaqueWindowState = null; mForceStatusBar = false; mForceStatusBarFromKeyguard = false; + mForcingShowNavBar = false; + mForcingShowNavBarLayer = -1; mHideLockScreen = false; mAllowLockscreenWhenOn = false; @@ -2950,6 +2954,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { WindowManager.LayoutParams attrs) { if (DEBUG_LAYOUT) Slog.i(TAG, "Win " + win + ": isVisibleOrBehindKeyguardLw=" + win.isVisibleOrBehindKeyguardLw()); + if (mTopFullscreenOpaqueWindowState == null && (win.getAttrs().privateFlags + &WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_SHOW_NAV_BAR) != 0) { + if (mForcingShowNavBarLayer < 0) { + mForcingShowNavBar = true; + mForcingShowNavBarLayer = win.getSurfaceLayer(); + } + } if (mTopFullscreenOpaqueWindowState == null && win.isVisibleOrBehindKeyguardLw() && !win.isGoneForLayoutLw()) { if ((attrs.flags & FLAG_FORCE_NOT_FULLSCREEN) != 0) { @@ -4478,9 +4489,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { // will quickly lose focus once it correctly gets hidden. return 0; } - final int visibility = mFocusedWindow.getSystemUiVisibility() + int tmpVisibility = mFocusedWindow.getSystemUiVisibility() & ~mResettingSystemUiFlags & ~mForceClearedSystemUiFlags; + if (mForcingShowNavBar && mFocusedWindow.getSurfaceLayer() < mForcingShowNavBarLayer) { + tmpVisibility &= ~View.SYSTEM_UI_CLEARABLE_FLAGS; + } + final int visibility = tmpVisibility; int diff = visibility ^ mLastSystemUiFlags; final boolean needsMenu = mFocusedWindow.getNeedsMenuLw(mTopFullscreenOpaqueWindowState); if (diff == 0 && mLastFocusNeedsMenu == needsMenu @@ -4667,6 +4682,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mTopFullscreenOpaqueWindowState="); pw.println(mTopFullscreenOpaqueWindowState); } + if (mForcingShowNavBar) { + pw.print(prefix); pw.print("mForcingShowNavBar="); + pw.println(mForcingShowNavBar); pw.print( "mForcingShowNavBarLayer="); + pw.println(mForcingShowNavBarLayer); + } pw.print(prefix); pw.print("mTopIsFullscreen="); pw.print(mTopIsFullscreen); pw.print(" mHideLockScreen="); pw.println(mHideLockScreen); pw.print(prefix); pw.print("mForceStatusBar="); pw.print(mForceStatusBar); |