diff options
| author | 2012-10-11 14:07:58 -0700 | |
|---|---|---|
| committer | 2012-10-11 14:13:31 -0700 | |
| commit | a987d43bc916b6446fe41037d9fcf07e778b3452 (patch) | |
| tree | b6b73ddaa09b417f56ba6ead1a655452b16757ed | |
| parent | 0a75ed0805dd7f97ff058623eb8e4f4b258c44ab (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-x | services/java/com/android/server/wm/WindowManagerService.java | 1 | ||||
| -rw-r--r-- | services/java/com/android/server/wm/WindowState.java | 6 |
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; } |