diff options
| -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 2a5dbb4..c5d7a54 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1484,10 +1484,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); |
