summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2014-06-10 19:07:31 +0900
committerYohei Yukawa <yukawa@google.com>2014-06-11 00:50:29 +0900
commit1ee99c4627eeae1a94ada9a884a76b726cf6ca4c (patch)
tree439c2fd7460b2175ad2dca9d550ed7d38e425498
parentcc62d9ad6bb84f2d5ccf8c4b64f581990bf43751 (diff)
downloadframeworks_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.java13
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);