Loading services/core/java/com/android/server/wm/ActivityRecord.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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); Loading services/core/java/com/android/server/wm/WindowManagerService.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -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) { Loading @@ -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 Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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); Loading
services/core/java/com/android/server/wm/WindowManagerService.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -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) { Loading @@ -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 Loading