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

Commit a08db2de authored by Tony Huang's avatar Tony Huang Committed by Android (Google) Code Review
Browse files

Merge "Set allowTouches after the fling animation end" into rvc-dev

parents c06c034a 413e9313
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -815,6 +815,7 @@ public class PipTouchHandler {
    private class DefaultPipTouchGesture extends PipTouchGesture {
        private final Point mStartPosition = new Point();
        private final PointF mDelta = new PointF();
        private boolean mShouldHideMenuAfterFling;

        @Override
        public void onDown(PipTouchState touchState) {
@@ -892,21 +893,17 @@ public class PipTouchHandler {
            final float velocity = PointF.length(vel.x, vel.y);

            if (touchState.isDragging()) {
                Runnable endAction = null;
                if (mMenuState != MENU_STATE_NONE) {
                    // If the menu is still visible, then just poke the menu so that
                    // it will timeout after the user stops touching it
                    mMenuController.showMenu(mMenuState, mMotionHelper.getBounds(),
                            true /* allowMenuTimeout */, willResizeMenu());
                } else {
                    // If the menu is not visible, then we can still be showing the activity for the
                    // dismiss overlay, so just finish it after the animation completes
                    endAction = mMenuController::hideMenu;
                }
                mShouldHideMenuAfterFling = mMenuState == MENU_STATE_NONE;

                mMotionHelper.flingToSnapTarget(vel.x, vel.y,
                        PipTouchHandler.this::updateDismissFraction /* updateAction */,
                        endAction /* endAction */);
                        this::flingEndAction /* endAction */);
            } else if (mTouchState.isDoubleTap()) {
                // Expand to fullscreen if this is a double tap
                // the PiP should be frozen until the transition ends
@@ -927,6 +924,15 @@ public class PipTouchHandler {
            }
            return true;
        }

        private void flingEndAction() {
            mTouchState.setAllowTouches(true);
            if (mShouldHideMenuAfterFling) {
                // If the menu is not visible, then we can still be showing the activity for the
                // dismiss overlay, so just finish it after the animation completes
                mMenuController.hideMenu();
            }
        }
    };

    /**