Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8a855e3 authored by Jorge Gil's avatar Jorge Gil Committed by Android (Google) Code Review
Browse files

Merge "Allow reentry bounds to be overriden before saving"

parents a2a62881 5679a841
Loading
Loading
Loading
Loading
+19 −11
Original line number Diff line number Diff line
@@ -356,17 +356,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
    @Override
    public void onPipTransitionStarted(ComponentName activity, int direction) {
        if (isOutPipDirection(direction)) {
            // On phones, the expansion animation that happens on pip tap before restoring
            // to fullscreen makes it so that the bounds received here are the expanded
            // bounds. We want to restore to the unexpanded bounds when re-entering pip,
            // so we save the bounds before expansion (normal) instead of the current
            // bounds.
            mReentryBounds.set(mTouchHandler.getNormalBounds());
            // Apply the snap fraction of the current bounds to the normal bounds.
            final Rect bounds = mPipTaskOrganizer.getLastReportedBounds();
            float snapFraction = mPipBoundsHandler.getSnapFraction(bounds);
            mPipBoundsHandler.applySnapFraction(mReentryBounds, snapFraction);
            // Save reentry bounds (normal non-expand bounds with current position applied).
            // Exiting PIP, save the reentry bounds to restore to when re-entering.
            updateReentryBounds();
            mPipBoundsHandler.onSaveReentryBounds(activity, mReentryBounds);
        }
        // Disable touches while the animation is running
@@ -380,6 +371,23 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
        }
    }

    /**
     * Update the bounds used to save the re-entry size and snap fraction when exiting PIP.
     */
    public void updateReentryBounds() {
        // On phones, the expansion animation that happens on pip tap before restoring
        // to fullscreen makes it so that the last reported bounds are the expanded
        // bounds. We want to restore to the unexpanded bounds when re-entering pip,
        // so we use the bounds before expansion (normal) instead of the reported
        // bounds.
        Rect reentryBounds = mTouchHandler.getNormalBounds();
        // Apply the snap fraction of the current bounds to the normal bounds.
        final Rect bounds = mPipTaskOrganizer.getLastReportedBounds();
        float snapFraction = mPipBoundsHandler.getSnapFraction(bounds);
        mPipBoundsHandler.applySnapFraction(reentryBounds, snapFraction);
        mReentryBounds.set(reentryBounds);
    }

    @Override
    public void onPipTransitionFinished(ComponentName activity, int direction) {
        onPipTransitionFinishedOrCanceled(direction);