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
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user