Merge "Fix a bug on the focus of the input method switching dialog"
This commit is contained in:
committed by
Android (Google) Code Review
commit
f1a6d646a4
@ -9629,6 +9629,16 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// change message pending.
|
||||
mH.removeMessages(H.REPORT_FOCUS_CHANGE);
|
||||
mH.sendEmptyMessage(H.REPORT_FOCUS_CHANGE);
|
||||
// TODO(multidisplay): Focused windows on default display only.
|
||||
final DisplayContent displayContent = getDefaultDisplayContentLocked();
|
||||
final boolean imWindowChanged = moveInputMethodWindowsIfNeededLocked(
|
||||
mode != UPDATE_FOCUS_WILL_ASSIGN_LAYERS
|
||||
&& mode != UPDATE_FOCUS_WILL_PLACE_SURFACES);
|
||||
if (imWindowChanged) {
|
||||
displayContent.layoutNeeded = true;
|
||||
newFocus = computeFocusedWindowLocked();
|
||||
}
|
||||
|
||||
if (localLOGV) Slog.v(
|
||||
TAG, "Changing focus from " + mCurrentFocus + " to " + newFocus);
|
||||
final WindowState oldFocus = mCurrentFocus;
|
||||
@ -9636,16 +9646,9 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
mLosingFocus.remove(newFocus);
|
||||
int focusChanged = mPolicy.focusChangedLw(oldFocus, newFocus);
|
||||
|
||||
// TODO(multidisplay): Focused windows on default display only.
|
||||
final DisplayContent displayContent = getDefaultDisplayContentLocked();
|
||||
|
||||
final WindowState imWindow = mInputMethodWindow;
|
||||
if (newFocus != imWindow && oldFocus != imWindow) {
|
||||
if (moveInputMethodWindowsIfNeededLocked(
|
||||
mode != UPDATE_FOCUS_WILL_ASSIGN_LAYERS &&
|
||||
mode != UPDATE_FOCUS_WILL_PLACE_SURFACES)) {
|
||||
displayContent.layoutNeeded = true;
|
||||
}
|
||||
if (imWindowChanged && oldFocus != imWindow) {
|
||||
// Focus of the input method window changed. Perform layout if needed.
|
||||
if (mode == UPDATE_FOCUS_PLACING_SURFACES) {
|
||||
performLayoutLockedInner(displayContent, true /*initial*/, updateInputWindows);
|
||||
focusChanged &= ~WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
|
||||
|
Reference in New Issue
Block a user