summaryrefslogtreecommitdiffstats
path: root/policy/src/com/android/internal
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2014-03-19 19:48:38 -0700
committerCraig Mautner <cmautner@google.com>2014-03-21 09:31:35 -0700
commit2bc789bf1af7cb82e324df0e5bb8bf6fe4849b00 (patch)
treeb2bc61256a0c0f262bbcd83a6518daed1c053249 /policy/src/com/android/internal
parentaef4f6ebc8f8eb1f9fbfbe4ae2556c9f1a26a63c (diff)
downloadframeworks_base-2bc789bf1af7cb82e324df0e5bb8bf6fe4849b00.zip
frameworks_base-2bc789bf1af7cb82e324df0e5bb8bf6fe4849b00.tar.gz
frameworks_base-2bc789bf1af7cb82e324df0e5bb8bf6fe4849b00.tar.bz2
Allow FLAG_SHOW_WHEN_LOCKED to apply to dialogs
Previous fix to keep non-show-when-locked windows hid dialogs from activities that had asked to be show-when-locked. That was too restrictive. Fixes bug 13225149. Change-Id: I39ae9d7cbcc9b5109257f732d027bda3a2de65e4
Diffstat (limited to 'policy/src/com/android/internal')
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindowManager.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 3c23c6e..ededbb2 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -106,6 +106,7 @@ import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.HashSet;
import static android.view.WindowManager.LayoutParams.*;
import static android.view.WindowManagerPolicy.WindowManagerFuncs.LID_ABSENT;
@@ -374,7 +375,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static final Rect mTmpNavigationFrame = new Rect();
WindowState mTopFullscreenOpaqueWindowState;
- boolean mHideWindowBehindKeyguard;
+ HashSet<IApplicationToken> mAppsToBeHidden = new HashSet<IApplicationToken>();
boolean mTopIsFullscreen;
boolean mForceStatusBar;
boolean mForceStatusBarFromKeyguard;
@@ -3366,7 +3367,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
@Override
public void beginPostLayoutPolicyLw(int displayWidth, int displayHeight) {
mTopFullscreenOpaqueWindowState = null;
- mHideWindowBehindKeyguard = false;
+ mAppsToBeHidden.clear();
mForceStatusBar = false;
mForceStatusBarFromKeyguard = false;
mForcingShowNavBar = false;
@@ -3417,12 +3418,17 @@ public class PhoneWindowManager implements WindowManagerPolicy {
final boolean showWhenLocked = (fl & FLAG_SHOW_WHEN_LOCKED) != 0;
if (appWindow) {
+ if (showWhenLocked) {
+ mAppsToBeHidden.remove(win.getAppToken());
+ } else {
+ mAppsToBeHidden.add(win.getAppToken());
+ }
if (attrs.x == 0 && attrs.y == 0
&& attrs.width == WindowManager.LayoutParams.MATCH_PARENT
&& attrs.height == WindowManager.LayoutParams.MATCH_PARENT) {
if (DEBUG_LAYOUT) Slog.v(TAG, "Fullscreen window: " + win);
mTopFullscreenOpaqueWindowState = win;
- if (!mHideWindowBehindKeyguard) {
+ if (mAppsToBeHidden.isEmpty()) {
if (showWhenLocked) {
if (DEBUG_LAYOUT) Slog.v(TAG,
"Setting mHideLockScreen to true by win " + win);
@@ -3442,8 +3448,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if ((fl & FLAG_ALLOW_LOCK_WHILE_SCREEN_ON) != 0) {
mAllowLockscreenWhenOn = true;
}
- } else if (!showWhenLocked) {
- mHideWindowBehindKeyguard = true;
}
}
}