diff options
| author | 2024-04-23 14:08:33 +0000 | |
|---|---|---|
| committer | 2024-04-23 14:08:33 +0000 | |
| commit | 842ae36db755c274b6122af78d2e7a09adab708b (patch) | |
| tree | ff119be52619d880eb684fc234bef7efe18a73e6 | |
| parent | 46e4ea5f8c3eb97c81faceee01a481463a3dfd4c (diff) | |
| parent | e423d38ac67a6c2c7334cabbd20d45109bded1ce (diff) | |
Merge "Only hide ime leash for invisible ime control target" into main
| -rw-r--r-- | services/core/java/com/android/server/wm/Transition.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 989888ee3ac3..1543263c0e89 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -1554,11 +1554,14 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { // but InsetsStateController#notifyControlTargetChanged still waits for IME to redraw. final InsetsSourceProvider sourceProvider = imeWindow.getControllableInsetProvider(); if (sourceProvider == null || sourceProvider.mControl == null + || !sourceProvider.isClientVisible() || imeTarget == sourceProvider.getControlTarget()) { return; } final SurfaceControl imeInsetsLeash = sourceProvider.mControl.getLeash(); - if (imeInsetsLeash != null) { + final InsetsControlTarget controlTarget = sourceProvider.getControlTarget(); + if (imeInsetsLeash != null && controlTarget != null && controlTarget.getWindow() != null + && !controlTarget.getWindow().mToken.isVisible()) { dc.getSyncTransaction().reparent(imeInsetsLeash, null); } } |