Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 234b6338 authored by Robert Carr's avatar Robert Carr
Browse files

Layer input method on top while transitioning.

When exiting an app, we need to keep the IME on top of it
for the duration of the closing animation. Previously
this was accomplished by having the app remain as the IME target
based on a comparison of mAnimLayer with the new layer. The new
architecture makes it difficult to do any such direct comparison.
We opt instead for the approach of promoting the IME above all apps
during app transitions.

Bug: 74427597
Test: Manual. go/wm-smoke
Change-Id: I0fb66b4cab8aa474c7a64d0cefd32310151d544e
parent 98297393
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -3807,9 +3807,15 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        // we use relative layering of the IME targets child windows, and place the
        // IME in the non-app layer (see {@link AboveAppWindowContainers#assignChildLayers}).
        //
        // In the case the IME target is animating, the animation Z order may be different
        // than the WindowContainer Z order, so it's difficult to be sure we have the correct
        // IME target. In this case we just layer the IME over all transitions by placing it in the
        // above applications layer.
        //
        // In the case where we have no IME target we assign it where it's base layer would
        // place it in the AboveAppWindowContainers.
        if (imeTarget != null && !imeTarget.inSplitScreenWindowingMode()
        if (imeTarget != null && !(imeTarget.inSplitScreenWindowingMode()
                || imeTarget.mToken.isAppAnimating())
                && (imeTarget.getSurfaceControl() != null)) {
            mImeWindowsContainers.assignRelativeLayer(t, imeTarget.getSurfaceControl(),
                    // TODO: We need to use an extra level on the app surface to ensure