From 359ba05c2667f96f6f88b31d839d56f4a2843a18 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Wed, 29 Dec 2021 17:57:55 +0800 Subject: [PATCH] Re-compute IME target after the transition finished This replaces previous approach (440f068) with a simpler condition at a more explicit place. The old condition !isPlaying is always satisfied in normal traversal that causes endless surface placement. And it might be better to keep checkAppTransitionReady focus on legacy things, to avoid mixing unnecessary operation while using shell transition. Bug: 210390668 Test: 1. Enabling shell transition. 2. Launch Settings and click search bar to show IME. 3. Swipe from bottom to home. 4. Click the search bar of app drawer, IME should show. Change-Id: I89cdbcd19710720383f4488d859a7453a14c8c0f --- .../java/com/android/server/wm/RootWindowContainer.java | 8 +------- services/core/java/com/android/server/wm/Transition.java | 5 +++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 0826904d10e06..535bbb74d1e3c 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -1037,13 +1037,7 @@ class RootWindowContainer extends WindowContainer } } - final boolean curDisplayInTransitNotAnimate = - // legacy transition - (curDisplay.mAppTransition.isRunning() && !curDisplay.isAppTransitioning()) - // shell transition - || (curDisplay.mTransitionController.isShellTransitionsEnabled() - && !curDisplay.mTransitionController.isPlaying()); - if (curDisplayInTransitNotAnimate) { + if (curDisplay.mAppTransition.isRunning() && !curDisplay.isAppTransitioning()) { // We have finished the animation of an app transition. To do this, we have // delayed a lot of operations like showing and hiding apps, moving apps in // Z-order, etc. diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 1c40044658868..a4771082b3e93 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -497,6 +497,11 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe if (fadeRotationController != null) { fadeRotationController.onTransitionFinished(); } + // Transient-launch activities cannot be IME target (WindowState#canBeImeTarget), + // so re-compute in case the IME target is changed after transition. + if (mTransientLaunches != null) { + mTargetDisplay.computeImeTarget(true /* updateImeTarget */); + } } void abort() {