Merge "Update bounds on shelf/ime adjustment during transition" into rvc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
index 8cff20a..d9872d7 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
@@ -319,23 +319,29 @@
* TODO(b/152809058): consolidate the display info handling logic in SysUI
*/
@SuppressWarnings("unchecked")
- public void mayUpdateCurrentAnimationOnRotationChange() {
+ public void onMovementBoundsChanged(boolean fromImeAdjustment, boolean fromShelfAdjustment) {
final PipAnimationController.PipTransitionAnimator animator =
mPipAnimationController.getCurrentAnimator();
- if (animator != null && animator.isRunning()
- && animator.getTransitionDirection() == TRANSITION_DIRECTION_TO_PIP) {
- final Rect currentDestinationBounds = animator.getDestinationBounds();
- if (mPipBoundsHandler.getDisplayBounds().contains(currentDestinationBounds)) {
- return;
- }
- final Rect newDestinationBounds = mPipBoundsHandler.getDestinationBounds(
- getAspectRatioOrDefault(mTaskInfo.pictureInPictureParams),
- null /* bounds */, getMinimalSize(mTaskInfo.topActivityInfo));
- if (animator.getAnimationType() == ANIM_TYPE_BOUNDS) {
- animator.updateEndValue(newDestinationBounds);
- }
- animator.setDestinationBounds(newDestinationBounds);
+ if (animator == null || !animator.isRunning()
+ || animator.getTransitionDirection() != TRANSITION_DIRECTION_TO_PIP) {
+ return;
}
+
+ final Rect currentDestinationBounds = animator.getDestinationBounds();
+ if (!fromImeAdjustment && !fromShelfAdjustment
+ && mPipBoundsHandler.getDisplayBounds().contains(currentDestinationBounds)) {
+ // no need to update the destination bounds, bail early
+ return;
+ }
+
+ final Rect newDestinationBounds = mPipBoundsHandler.getDestinationBounds(
+ getAspectRatioOrDefault(mTaskInfo.pictureInPictureParams),
+ null /* bounds */, getMinimalSize(mTaskInfo.topActivityInfo));
+ if (newDestinationBounds.equals(currentDestinationBounds)) return;
+ if (animator.getAnimationType() == ANIM_TYPE_BOUNDS) {
+ animator.updateEndValue(newDestinationBounds);
+ }
+ animator.setDestinationBounds(newDestinationBounds);
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
index 99d6df5..918c45b 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
@@ -362,7 +362,7 @@
mTouchHandler.onMovementBoundsChanged(mTmpInsetBounds, mTmpNormalBounds,
animatingBounds, fromImeAdjustment, fromShelfAdjustment,
mTmpDisplayInfo.rotation);
- mPipTaskOrganizer.mayUpdateCurrentAnimationOnRotationChange();
+ mPipTaskOrganizer.onMovementBoundsChanged(fromImeAdjustment, fromShelfAdjustment);
}
public void dump(PrintWriter pw) {