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 | |
| 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')
| -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); | 
