diff --git a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java index d025b0f4ece5a..33c78e403ce3c 100644 --- a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java @@ -1347,13 +1347,14 @@ public final class MultiClientInputMethodManagerService { for (WindowInfo windowInfo : clientInfo.mWindowMap.values()) { if (windowInfo.mWindowHandle == targetWindowHandle) { final IBinder targetWindowToken = windowInfo.mWindowToken; - // TODO(yukawa): Report targetWindowToken and targetWindowToken to WMS. if (DEBUG) { Slog.v(TAG, "reportImeWindowTarget" + " clientId=" + clientId + " imeWindowToken=" + imeWindowToken + " targetWindowToken=" + targetWindowToken); } + mIWindowManagerInternal.updateInputMethodTargetWindow( + imeWindowToken, targetWindowToken); } } // not found. @@ -1496,6 +1497,9 @@ public final class MultiClientInputMethodManagerService { case InputMethodClientState.ALREADY_SENT_BIND_RESULT: try { clientInfo.mMSInputMethodSession.showSoftInput(flags, resultReceiver); + + // Forcing WM to show IME on imeTargetWindow + mWindowManagerInternal.showImePostLayout(token); } catch (RemoteException e) { } break;