Fix issue where PIP jumps after being tapped after being dragged through the dismiss target.

onBoundsAnimationEnd does not set the permanent bounds if mSpringingToTouch=true, since that indicates that PIP caught up with the touch location - and the touch location is a temporary position. We eventually set the permanent bounds after flingToSnapTarget's animation ends.

However, if PIP was flung to a snap target while mSpringingToTouch=true, those permanent bounds were never set. Starting a drag gesture would have set the permanent bounds, which is why this is only visible if you tap immediately after doing all this.

Bug: 159909223
Test: tap pip after dragging it through dismiss without moving it again
Change-Id: I67a9c19bf8dafab4cee646539d9f5a4575a14ffd
This commit is contained in:
Josh Tsuji
2020-06-25 13:13:04 -04:00
parent 2ba2ce1282
commit 40d313a046

View File

@@ -365,6 +365,10 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
void flingToSnapTarget(
float velocityX, float velocityY,
@Nullable Runnable updateAction, @Nullable Runnable endAction) {
// If we're flinging to a snap target now, we're not springing to catch up to the touch
// location now.
mSpringingToTouch = false;
mTemporaryBoundsPhysicsAnimator
.spring(FloatProperties.RECT_WIDTH, mBounds.width(), mSpringConfig)
.spring(FloatProperties.RECT_HEIGHT, mBounds.height(), mSpringConfig)