summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2024-04-23 14:08:33 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-04-23 14:08:33 +0000
commit842ae36db755c274b6122af78d2e7a09adab708b (patch)
treeff119be52619d880eb684fc234bef7efe18a73e6
parent46e4ea5f8c3eb97c81faceee01a481463a3dfd4c (diff)
parente423d38ac67a6c2c7334cabbd20d45109bded1ce (diff)
Merge "Only hide ime leash for invisible ime control target" into main
-rw-r--r--services/core/java/com/android/server/wm/Transition.java5
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);
}
}