Merge "Avoid invisible PiP handling input events" into udc-dev

This commit is contained in:
Riddle Hsu
2023-05-31 09:19:22 +00:00
committed by Android (Google) Code Review

View File

@@ -1079,10 +1079,28 @@ public class PipTransition extends PipTransitionController {
}
final float alphaStart = show ? 0 : 1;
final float alphaEnd = show ? 1 : 0;
final PipAnimationController.PipTransactionHandler transactionHandler =
new PipAnimationController.PipTransactionHandler() {
@Override
public boolean handlePipTransaction(SurfaceControl leash,
SurfaceControl.Transaction tx, Rect destinationBounds, float alpha) {
if (alpha == 0) {
if (show) {
tx.setPosition(leash, destinationBounds.left, destinationBounds.top);
} else {
// Put PiP out of the display so it won't block touch when it is hidden.
final Rect displayBounds = mPipDisplayLayoutState.getDisplayBounds();
final int max = Math.max(displayBounds.width(), displayBounds.height());
tx.setPosition(leash, max, max);
}
}
return false;
}
};
mPipAnimationController
.getAnimator(taskInfo, leash, mPipBoundsState.getBounds(), alphaStart, alphaEnd)
.setTransitionDirection(TRANSITION_DIRECTION_SAME)
.setPipAnimationCallback(mPipAnimationCallback)
.setPipTransactionHandler(transactionHandler)
.setDuration(mEnterExitAnimationDuration)
.start();
mHasFadeOut = !show;