Merge "Calling updateImeParent when the layering target is staled" into sc-dev

This commit is contained in:
Ming-Shin Lu
2021-06-21 17:41:49 +00:00
committed by Android (Google) Code Review

View File

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