diff options
| author | Yohei Yukawa <yukawa@google.com> | 2014-06-10 19:07:31 +0900 |
|---|---|---|
| committer | Yohei Yukawa <yukawa@google.com> | 2014-06-11 00:50:29 +0900 |
| commit | 1ee99c4627eeae1a94ada9a884a76b726cf6ca4c (patch) | |
| tree | 439c2fd7460b2175ad2dca9d550ed7d38e425498 | |
| parent | cc62d9ad6bb84f2d5ccf8c4b64f581990bf43751 (diff) | |
| download | frameworks_base-1ee99c4627eeae1a94ada9a884a76b726cf6ca4c.zip frameworks_base-1ee99c4627eeae1a94ada9a884a76b726cf6ca4c.tar.gz frameworks_base-1ee99c4627eeae1a94ada9a884a76b726cf6ca4c.tar.bz2 | |
Show IME-related system IME dialogs over windows owned by the IME
The IME-related system dialogs should be placed over any window
owned by the current IME. However, the framework has taken only
the main window of the current IME has been taken into account.
As a result, the system has not been able to show its IME-related
dialog properly layer when the IME is showing its own dialog.
This CL addresses the above issue.
BUG: 5809660
Change-Id: I205321c7ed42516f36a4bf29dd6a159ac34fd5ec
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 2d15dab..8e53a43 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1487,10 +1487,15 @@ public class WindowManagerService extends IWindowManager.Stub if (pos >= 0) { final AppWindowToken targetAppToken = mInputMethodTarget.mAppToken; - if (pos < windows.size()) { - WindowState wp = windows.get(pos); - if (wp == mInputMethodWindow) { - pos++; + // Skip windows owned by the input method. + if (mInputMethodWindow != null) { + while (pos < windows.size()) { + WindowState wp = windows.get(pos); + if (wp == mInputMethodWindow || wp.mAttachedWindow == mInputMethodWindow) { + pos++; + continue; + } + break; } } if (DEBUG_INPUT_METHOD) Slog.v(TAG, "Adding " + N + " dialogs at pos=" + pos); |
