Merge "Fix IME target after rotation" into pi-dev
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index fa7eff2..898f1a6 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -1930,7 +1930,15 @@
winAnimator.setOpaqueLocked(false);
}
- boolean imMayMove = (flagChanges & (FLAG_ALT_FOCUSABLE_IM | FLAG_NOT_FOCUSABLE)) != 0;
+ final int oldVisibility = win.mViewVisibility;
+
+ // If the window is becoming visible, visibleOrAdding may change which may in turn
+ // change the IME target.
+ final boolean becameVisible =
+ (oldVisibility == View.INVISIBLE || oldVisibility == View.GONE)
+ && viewVisibility == View.VISIBLE;
+ boolean imMayMove = (flagChanges & (FLAG_ALT_FOCUSABLE_IM | FLAG_NOT_FOCUSABLE)) != 0
+ || becameVisible;
final boolean isDefaultDisplay = win.isDefaultDisplay();
boolean focusMayChange = isDefaultDisplay && (win.mViewVisibility != viewVisibility
|| ((flagChanges & FLAG_NOT_FOCUSABLE) != 0)
@@ -1946,7 +1954,6 @@
win.mRelayoutCalled = true;
win.mInRelayout = true;
- final int oldVisibility = win.mViewVisibility;
win.mViewVisibility = viewVisibility;
if (DEBUG_SCREEN_ON) {
RuntimeException stack = new RuntimeException();