Merge "Reparent PiP to split screen on exit" into rvc-dev am: 11affeca99 am: f0caffa0a9 am: 5ed0108646

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11973248

Change-Id: I6b807e13a5a623030328fdf823a5f0027db04c85
This commit is contained in:
Hongwei Wang
2020-06-23 21:59:10 +00:00
committed by Automerger Merge Worker

View File

@@ -273,8 +273,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements
sendOnPipTransitionStarted(direction);
// Don't bother doing an animation if the display rotation differs or if it's in
// a non-supported windowing mode
wct.setWindowingMode(mToken, WINDOWING_MODE_UNDEFINED);
wct.setActivityWindowingMode(mToken, WINDOWING_MODE_UNDEFINED);
applyWindowingModeChangeOnExit(wct, direction);
WindowOrganizer.applyTransaction(wct);
// Send finished callback though animation is ignored.
sendOnPipTransitionFinished(direction);
@@ -303,6 +302,16 @@ public class PipTaskOrganizer extends TaskOrganizer implements
mExitingPip = true;
}
private void applyWindowingModeChangeOnExit(WindowContainerTransaction wct, int direction) {
// Reset the final windowing mode.
wct.setWindowingMode(mToken, getOutPipWindowingMode());
// Simply reset the activity mode set prior to the animation running.
wct.setActivityWindowingMode(mToken, WINDOWING_MODE_UNDEFINED);
if (mSplitDivider != null && direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN) {
wct.reparent(mToken, mSplitDivider.getSecondaryRoot(), true /* onTop */);
}
}
/**
* Removes PiP immediately.
*/
@@ -745,13 +754,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements
// on the task to ensure that the task "matches" the parent's bounds.
taskBounds = (direction == TRANSITION_DIRECTION_TO_FULLSCREEN)
? null : destinationBounds;
// Reset the final windowing mode.
wct.setWindowingMode(mToken, getOutPipWindowingMode());
// Simply reset the activity mode set prior to the animation running.
wct.setActivityWindowingMode(mToken, WINDOWING_MODE_UNDEFINED);
if (mSplitDivider != null && direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN) {
wct.reparent(mToken, mSplitDivider.getSecondaryRoot(), true /* onTop */);
}
applyWindowingModeChangeOnExit(wct, direction);
} else {
// Just a resize in PIP
taskBounds = destinationBounds;