Merge "Calling updateImeParent when the layering target is staled" into sc-dev am: cae02ff4dc am: 7916b69e2b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14842887

Change-Id: I240d8ed0b60141070556431bd8fb34d17def91c3
This commit is contained in:
Ming-Shin Lu
2021-06-22 15:09:36 +00:00
committed by Automerger Merge Worker

View File

@@ -3842,7 +3842,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
// 4. Update the IME control target to apply any inset change and animation.
// 5. Reparent the IME container surface to either the input target app, or the IME window
// parent.
updateImeControlTarget();
updateImeControlTarget(true /* forceUpdateImeParent */);
}
@VisibleForTesting
@@ -3974,12 +3974,17 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
}
void updateImeControlTarget() {
updateImeControlTarget(false /* forceUpdateImeParent */);
}
void updateImeControlTarget(boolean forceUpdateImeParent) {
InsetsControlTarget prevImeControlTarget = mImeControlTarget;
mImeControlTarget = computeImeControlTarget();
mInsetsStateController.onImeControlTargetChanged(mImeControlTarget);
// Update Ime parent when IME insets leash created, which is the best time that default
// IME visibility has been settled down after IME control target changed.
if (prevImeControlTarget != mImeControlTarget) {
// Update Ime parent when IME insets leash created or the new IME layering target might
// updated from setImeLayeringTarget, which is the best time that default IME visibility
// has been settled down after IME control target changed.
if (prevImeControlTarget != mImeControlTarget || forceUpdateImeParent) {
updateImeParent();
}