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

Commit 3109c3b7 authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Propagate last-ime-shown in the same task explicitly" into udc-dev

parents 92865c83 3756211c
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -3570,6 +3570,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A


                // Tell window manager to prepare for this one to be removed.
                // Tell window manager to prepare for this one to be removed.
                setVisibility(false);
                setVisibility(false);
                // Propagate the last IME visibility in the same task, so the IME can show
                // automatically if the next activity has a focused editable view.
                if (mLastImeShown && mTransitionController.isShellTransitionsEnabled()) {
                    final ActivityRecord nextRunning = task.topRunningActivity();
                    if (nextRunning != null) {
                        nextRunning.mLastImeShown = true;
                    }
                }


                if (getTaskFragment().getPausingActivity() == null) {
                if (getTaskFragment().getPausingActivity() == null) {
                    ProtoLog.v(WM_DEBUG_STATES, "Finish needs to pause: %s", this);
                    ProtoLog.v(WM_DEBUG_STATES, "Finish needs to pause: %s", this);
+4 −4
Original line number Original line Diff line number Diff line
@@ -9254,7 +9254,6 @@ public class WindowManagerService extends IWindowManager.Stub


    boolean shouldRestoreImeVisibility(IBinder imeTargetWindowToken) {
    boolean shouldRestoreImeVisibility(IBinder imeTargetWindowToken) {
        final Task imeTargetWindowTask;
        final Task imeTargetWindowTask;
        boolean hadRequestedShowIme = false;
        synchronized (mGlobalLock) {
        synchronized (mGlobalLock) {
            final WindowState imeTargetWindow = mWindowMap.get(imeTargetWindowToken);
            final WindowState imeTargetWindow = mWindowMap.get(imeTargetWindowToken);
            if (imeTargetWindow == null) {
            if (imeTargetWindow == null) {
@@ -9264,14 +9263,15 @@ public class WindowManagerService extends IWindowManager.Stub
            if (imeTargetWindowTask == null) {
            if (imeTargetWindowTask == null) {
                return false;
                return false;
            }
            }
            if (imeTargetWindow.mActivityRecord != null) {
            if (imeTargetWindow.mActivityRecord != null
                hadRequestedShowIme = imeTargetWindow.mActivityRecord.mLastImeShown;
                    && imeTargetWindow.mActivityRecord.mLastImeShown) {
                return true;
            }
            }
        }
        }
        final TaskSnapshot snapshot = getTaskSnapshot(imeTargetWindowTask.mTaskId,
        final TaskSnapshot snapshot = getTaskSnapshot(imeTargetWindowTask.mTaskId,
                imeTargetWindowTask.mUserId, false /* isLowResolution */,
                imeTargetWindowTask.mUserId, false /* isLowResolution */,
                false /* restoreFromDisk */);
                false /* restoreFromDisk */);
        return snapshot != null && snapshot.hasImeSurface() || hadRequestedShowIme;
        return snapshot != null && snapshot.hasImeSurface();
    }
    }


    @Override
    @Override