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

Commit 4ed31efe authored by Ben Lin's avatar Ben Lin
Browse files

PiP: Hide menu when resize starts.

Attempting to do resize while PIP menu is still visible causes weird
isseus such as jank and flickering, so just hide it. This usually always
happen already when user taps the outside bounds, but if the user starts
from the inside corners it's problematic.

Bug: 164882662
Test: Tap on PIP, see it expands and PIP menu shows up, try to resize -
no more flickering

Merged-In: If32aacc7e8d8f6784ad7fb83be14a8ba93c3491f
Change-Id: I68b42195fa70d3f61fb42cb33297152a4da963fc
parent 0d6e0d8e
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ public class PipResizeGestureHandler {
    private final Context mContext;
    private final PipBoundsHandler mPipBoundsHandler;
    private final PipMotionHelper mMotionHelper;
    private final PipMenuActivityController mMenuController;
    private final int mDisplayId;
    private final Executor mMainExecutor;
    private final SysUiState mSysUiState;
@@ -117,13 +118,14 @@ public class PipResizeGestureHandler {

    public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler,
            PipMotionHelper motionHelper, DeviceConfigProxy deviceConfig,
            PipTaskOrganizer pipTaskOrganizer, Function<Rect, Rect> movementBoundsSupplier,
            Runnable updateMovementBoundsRunnable, SysUiState sysUiState,
            PipUiEventLogger pipUiEventLogger) {
            PipTaskOrganizer pipTaskOrganizer, PipMenuActivityController pipMenuController,
            Function<Rect, Rect> movementBoundsSupplier, Runnable updateMovementBoundsRunnable,
            SysUiState sysUiState, PipUiEventLogger pipUiEventLogger) {
        mContext = context;
        mDisplayId = context.getDisplayId();
        mMainExecutor = context.getMainExecutor();
        mPipBoundsHandler = pipBoundsHandler;
        mMenuController = pipMenuController;
        mMotionHelper = motionHelper;
        mPipTaskOrganizer = pipTaskOrganizer;
        mMovementBoundsSupplier = movementBoundsSupplier;
@@ -322,6 +324,10 @@ public class PipResizeGestureHandler {
                        mInputMonitor.pilferPointers();
                    }
                    if (mThresholdCrossed) {
                        if (mMenuController.isMenuActivityVisible()) {
                            mMenuController.hideMenuWithoutResize();
                            mMenuController.hideMenu();
                        }
                        final Rect currentPipBounds = mMotionHelper.getBounds();
                        mLastResizeBounds.set(TaskResizingAlgorithm.resizeDrag(x, y,
                                mDownPoint.x, mDownPoint.y, currentPipBounds, mCtrlType, mMinSize.x,
+1 −1
Original line number Diff line number Diff line
@@ -232,7 +232,7 @@ public class PipTouchHandler {
                mSnapAlgorithm, floatingContentCoordinator);
        mPipResizeGestureHandler =
                new PipResizeGestureHandler(context, pipBoundsHandler, mMotionHelper,
                        deviceConfig, pipTaskOrganizer, this::getMovementBounds,
                        deviceConfig, pipTaskOrganizer, menuController, this::getMovementBounds,
                        this::updateMovementBounds, sysUiState, pipUiEventLogger);
        mTouchState = new PipTouchState(ViewConfiguration.get(context), mHandler,
                () -> mMenuController.showMenuWithDelay(MENU_STATE_FULL, mMotionHelper.getBounds(),