summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Craig Mautner <cmautner@google.com> 2012-10-11 14:07:58 -0700
committer Craig Mautner <cmautner@google.com> 2012-10-11 14:13:31 -0700
commita987d43bc916b6446fe41037d9fcf07e778b3452 (patch)
treeb6b73ddaa09b417f56ba6ead1a655452b16757ed
parent0a75ed0805dd7f97ff058623eb8e4f4b258c44ab (diff)
Check for apps closing and restore mExiting test.
Removal of the mExiting test in a previous CL was a mistake leading to z-order errors. In particular the auto complete dialog was on top of the IME and was being dismissed due to touches on the IME. Restoring mExiting alone missed cases where apps were exiting which don't set mExiting. Adding a test for membership in mClosingApps fixes that. Bug: 7327220 fixed. Change-Id: I3965b8a07080d1347bdada51ffeafe6ef2e32c8e
-rwxr-xr-xservices/java/com/android/server/wm/WindowManagerService.java1
-rw-r--r--services/java/com/android/server/wm/WindowState.java6
2 files changed, 6 insertions, 1 deletions
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 54f6deb417be..77d815b31fe0 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -1213,6 +1213,7 @@ public class WindowManagerService extends IWindowManager.Stub
final WindowState curTarget = mInputMethodTarget;
if (curTarget != null && w != null
&& curTarget.isDisplayedLw()
+ && curTarget.isClosing()
&& (curTarget.mWinAnimator.mAnimLayer > w.mWinAnimator.mAnimLayer)) {
if (DEBUG_INPUT_METHOD) Slog.v(TAG, "Current target higher, not changing");
return windows.indexOf(curTarget) + 1;
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index 23892f6782f2..feb29b15e337 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -1024,6 +1024,10 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return mClient.asBinder().isBinderAlive();
}
+ boolean isClosing() {
+ return mExiting || (mService.mClosingApps.contains(mAppToken));
+ }
+
@Override
public boolean isDefaultDisplay() {
return mDisplayContent.isDefaultDisplay;
@@ -1234,7 +1238,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
mWasPaused = mToken.paused;
mStringNameCache = "Window{" + Integer.toHexString(System.identityHashCode(this))
+ " u" + UserHandle.getUserId(mSession.mUid)
- + " " + mLastTitle + (mWasPaused ? " PAUSED}" : "}");
+ + " " + mLastTitle + (mExiting ? " EXITING}" : "}");
}
return mStringNameCache;
}