Clear pair in recents if exit by other components

Split could exit by other components, but in such situation split
will not handle the transition, so we could clear pair in recents
when the founction called.

Fix: 292184502
Test: manual
Test: pass existing tests
Change-Id: I20d8d55c3f3f28d01407398b6de3cc7828e0caca
This commit is contained in:
Tony Huang
2023-07-21 07:20:36 +00:00
parent 1e68575dd5
commit 72f2d8303b
3 changed files with 5 additions and 3 deletions

View File

@@ -590,7 +590,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
SplitScreenController split = mSplitScreenOptional.get();
if (split.isTaskInSplitScreen(mTaskInfo.lastParentTaskIdBeforePip)) {
split.prepareExitSplitScreen(wct, split.getStageOfTask(
mTaskInfo.lastParentTaskIdBeforePip));
mTaskInfo.lastParentTaskIdBeforePip),
SplitScreenController.EXIT_REASON_APP_FINISHED);
}
}
mPipTransitionController.startExitTransition(TRANSIT_EXIT_PIP, wct, destinationBounds);

View File

@@ -423,8 +423,9 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
* transition.
*/
public void prepareExitSplitScreen(WindowContainerTransaction wct,
@StageType int stageToTop) {
@StageType int stageToTop, @ExitReason int reason) {
mStageCoordinator.prepareExitSplitScreen(stageToTop, wct);
mStageCoordinator.clearSplitPairedInRecents(reason);
}
public void enterSplitScreen(int taskId, boolean leftOrTop) {

View File

@@ -1494,7 +1494,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
}
}
private void clearSplitPairedInRecents(@ExitReason int exitReason) {
void clearSplitPairedInRecents(@ExitReason int exitReason) {
if (!shouldBreakPairedTaskInRecents(exitReason) || !mShouldUpdateRecents) return;
mRecentTasks.ifPresent(recentTasks -> {