Merge "Propagate last-ime-shown in the same task explicitly" into udc-dev
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user