Merge "Improve exit transition for task close case" into tm-qpr-dev

This commit is contained in:
Tony Huang
2023-03-23 06:17:06 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 4 deletions

View File

@@ -727,6 +727,10 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
getRefBounds2(mTempRect);
t.setPosition(leash2, mTempRect.left, mTempRect.top)
.setWindowCrop(leash2, mTempRect.width(), mTempRect.height());
// Make right or bottom side surface always higher than left or top side to avoid weird
// animation when dismiss split. e.g. App surface fling above on decor surface.
t.setLayer(leash1, 1);
t.setLayer(leash2, 2);
if (mImePositionProcessor.adjustSurfaceLayoutForIme(
t, dividerLeash, leash1, leash2, dimLayer1, dimLayer2)) {

View File

@@ -220,12 +220,20 @@ class StageTaskListener implements ShellTaskOrganizer.TaskListener {
mCallbacks.onNoLongerSupportMultiWindow();
return;
}
mChildrenTaskInfo.put(taskInfo.taskId, taskInfo);
if (taskInfo.topActivity == null && mChildrenTaskInfo.contains(taskInfo.taskId)
&& mChildrenTaskInfo.get(taskInfo.taskId).topActivity != null) {
// If top activity become null, it means the task is about to vanish, we use this
// signal to remove it from children list earlier for smooth dismiss transition.
mChildrenTaskInfo.remove(taskInfo.taskId);
mChildrenLeashes.remove(taskInfo.taskId);
} else {
mChildrenTaskInfo.put(taskInfo.taskId, taskInfo);
}
mCallbacks.onChildTaskStatusChanged(taskInfo.taskId, true /* present */,
taskInfo.isVisible);
if (!ENABLE_SHELL_TRANSITIONS) {
updateChildTaskSurface(
taskInfo, mChildrenLeashes.get(taskInfo.taskId), false /* firstAppeared */);
if (!ENABLE_SHELL_TRANSITIONS && mChildrenLeashes.contains(taskInfo.taskId)) {
updateChildTaskSurface(taskInfo, mChildrenLeashes.get(taskInfo.taskId),
false /* firstAppeared */);
}
} else {
throw new IllegalArgumentException(this + "\n Unknown task: " + taskInfo