Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMotionHelper.java +12 −0 Original line number Diff line number Diff line Loading @@ -773,6 +773,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, if (mWaitingForFlingTransition) { mWaitingForFlingTransition = false; handleFlingTransition(startTx, finishTx, destinationBounds); settlePipBoundsAfterFling(); } else if (mWaitingToPlayBoundsChangeTransition) { mWaitingToPlayBoundsChangeTransition = false; startResizeAnimation(startTx, finishTx, destinationBounds, duration); Loading Loading @@ -813,6 +814,17 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, mPipScheduler.scheduleFinishPipBoundsChange(destinationBounds); } private void settlePipBoundsAfterFling() { mPipTransitionState.setOnIdlePipTransitionStateRunnable(() -> { final int delta = mPipBoundsState.getMovementBounds().bottom - mPipBoundsState.getBounds().top; if (delta < 0) { // Move the PiP window to the movementBounds. animateToOffset(mPipBoundsState.getBounds(), delta); } }); } private void startResizeAnimation(SurfaceControl.Transaction startTx, SurfaceControl.Transaction finishTx, Rect destinationBounds, int duration) { SurfaceControl pipLeash = mPipTransitionState.getPinnedTaskLeash(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java +6 −1 Original line number Diff line number Diff line Loading @@ -386,8 +386,12 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha // Cache new movement bounds using the new potential IME height. updateMovementBounds(); mPipTransitionState.setOnIdlePipTransitionStateRunnable(() -> { if (imeVisible && mPipBoundsState.getMotionBoundsState().isInMotion()) { // Skip updating bounds now as it will be done after the animation settles return; } int delta = mPipBoundsState.getMovementBounds().bottom - mPipBoundsState.getBounds().top; boolean hasUserInteracted = (mPipBoundsState.hasUserMovedPip() Loading Loading @@ -1044,6 +1048,7 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha */ void updateMovementBounds() { Rect insetBounds = new Rect(); mPipBoundsState.setImeVisibility(mIsImeShowing, mIsImeShowing ? mImeHeight : 0); mPipBoundsAlgorithm.getInsetBounds(insetBounds); mPipBoundsAlgorithm.getMovementBounds(mPipBoundsState.getBounds(), insetBounds, mPipBoundsState.getMovementBounds(), mIsImeShowing ? mImeHeight : 0); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMotionHelper.java +12 −0 Original line number Diff line number Diff line Loading @@ -773,6 +773,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, if (mWaitingForFlingTransition) { mWaitingForFlingTransition = false; handleFlingTransition(startTx, finishTx, destinationBounds); settlePipBoundsAfterFling(); } else if (mWaitingToPlayBoundsChangeTransition) { mWaitingToPlayBoundsChangeTransition = false; startResizeAnimation(startTx, finishTx, destinationBounds, duration); Loading Loading @@ -813,6 +814,17 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, mPipScheduler.scheduleFinishPipBoundsChange(destinationBounds); } private void settlePipBoundsAfterFling() { mPipTransitionState.setOnIdlePipTransitionStateRunnable(() -> { final int delta = mPipBoundsState.getMovementBounds().bottom - mPipBoundsState.getBounds().top; if (delta < 0) { // Move the PiP window to the movementBounds. animateToOffset(mPipBoundsState.getBounds(), delta); } }); } private void startResizeAnimation(SurfaceControl.Transaction startTx, SurfaceControl.Transaction finishTx, Rect destinationBounds, int duration) { SurfaceControl pipLeash = mPipTransitionState.getPinnedTaskLeash(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java +6 −1 Original line number Diff line number Diff line Loading @@ -386,8 +386,12 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha // Cache new movement bounds using the new potential IME height. updateMovementBounds(); mPipTransitionState.setOnIdlePipTransitionStateRunnable(() -> { if (imeVisible && mPipBoundsState.getMotionBoundsState().isInMotion()) { // Skip updating bounds now as it will be done after the animation settles return; } int delta = mPipBoundsState.getMovementBounds().bottom - mPipBoundsState.getBounds().top; boolean hasUserInteracted = (mPipBoundsState.hasUserMovedPip() Loading Loading @@ -1044,6 +1048,7 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha */ void updateMovementBounds() { Rect insetBounds = new Rect(); mPipBoundsState.setImeVisibility(mIsImeShowing, mIsImeShowing ? mImeHeight : 0); mPipBoundsAlgorithm.getInsetBounds(insetBounds); mPipBoundsAlgorithm.getMovementBounds(mPipBoundsState.getBounds(), insetBounds, mPipBoundsState.getMovementBounds(), mIsImeShowing ? mImeHeight : 0); Loading