Make sure surface crop is up-to-date when moving to front

Before, when a TaskFragment is resized when moving to front, its surface
may still be croped for the old bounds. Now, we make sure the surface
crop is updated when moving to front.

Bug: 207070762
Test: manually verify with resizing display in background
Change-Id: I2103a1d8db855624310bc3becd9ed502fb082a7f
This commit is contained in:
Chris Li
2022-10-25 15:25:25 +08:00
parent 96e8a788ef
commit 250472ba67

View File

@@ -330,6 +330,15 @@ public class Transitions implements RemoteCallable<Transitions> {
final SurfaceControl leash = change.getLeash();
final int mode = info.getChanges().get(i).getMode();
if (mode == TRANSIT_TO_FRONT
&& ((change.getStartAbsBounds().height() != change.getEndAbsBounds().height()
|| change.getStartAbsBounds().width() != change.getEndAbsBounds().width()))) {
// When the window is moved to front with a different size, make sure the crop is
// updated to prevent it from using the old crop.
t.setWindowCrop(leash, change.getEndAbsBounds().width(),
change.getEndAbsBounds().height());
}
// Don't move anything that isn't independent within its parents
if (!TransitionInfo.isIndependent(change, info)) {
if (mode == TRANSIT_OPEN || mode == TRANSIT_TO_FRONT || mode == TRANSIT_CHANGE) {