diff options
3 files changed, 17 insertions, 78 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java index 1ce24f76ada5..d16c5782177e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java @@ -345,7 +345,6 @@ public class PipController implements ConfigurationChangeListener, return; } - mPipTouchHandler.updateMinMaxSize(mPipBoundsState.getAspectRatio()); mPipMenuController.hideMenu(); if (mPipTransitionState.isInFixedRotation()) { @@ -366,6 +365,8 @@ public class PipController implements ConfigurationChangeListener, mPipBoundsState.setBounds(toBounds); } t.setBounds(mPipTransitionState.getPipTaskToken(), mPipBoundsState.getBounds()); + // Update the size spec in PipBoundsState afterwards. + mPipBoundsState.updateMinMaxSize(mPipBoundsState.getAspectRatio()); } private void setDisplayLayout(DisplayLayout layout) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java index af1e98a3a8d2..d53365abd143 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java @@ -81,8 +81,6 @@ public class PipResizeGestureHandler implements private final PointF mDownSecondPoint = new PointF(); private final PointF mLastPoint = new PointF(); private final PointF mLastSecondPoint = new PointF(); - private final Point mMaxSize = new Point(); - private final Point mMinSize = new Point(); private final Rect mLastResizeBounds = new Rect(); private final Rect mUserResizeBounds = new Rect(); private final Rect mDownBounds = new Rect(); @@ -95,7 +93,6 @@ public class PipResizeGestureHandler implements private boolean mIsEnabled; private boolean mEnablePinchResize; private boolean mEnableDragCornerResize; - private boolean mIsSysUiStateValid; private boolean mThresholdCrossed; private boolean mOngoingPinchToResize = false; private boolean mWaitingForBoundsChangeTransition = false; @@ -152,7 +149,6 @@ public class PipResizeGestureHandler implements } void init() { - mContext.getDisplay().getRealSize(mMaxSize); reloadResources(); final Resources res = mContext.getResources(); @@ -163,15 +159,6 @@ public class PipResizeGestureHandler implements reloadResources(); } - /** - * Called when SysUI state changed. - * - * @param isSysUiStateValid Is SysUI valid or not. - */ - public void onSystemUiStateChanged(boolean isSysUiStateValid) { - mIsSysUiStateValid = isSysUiStateValid; - } - private void reloadResources() { mPipDragToResizeHandler.reloadResources(); mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop(); @@ -287,13 +274,15 @@ public class PipResizeGestureHandler implements } } + final Point minSize = mPipBoundsState.getMinSize(); + final Point maxSize = mPipBoundsState.getMaxSize(); if (mOngoingPinchToResize) { mPipPinchToResizeHandler.onPinchResize(mv, mDownPoint, mDownSecondPoint, mDownBounds, mLastPoint, mLastSecondPoint, mLastResizeBounds, mTouchSlop, - mMinSize, mMaxSize); + minSize, maxSize); } else if (mEnableDragCornerResize) { mPipDragToResizeHandler.onDragCornerResize(mv, mLastResizeBounds, mDownPoint, - mDownBounds, mMinSize, mMaxSize, mTouchSlop); + mDownBounds, minSize, maxSize, mTouchSlop); } } } @@ -327,7 +316,7 @@ public class PipResizeGestureHandler implements if (mEnablePinchResize && ev.getPointerCount() == 2) { mPipPinchToResizeHandler.onPinchResize(ev, mDownPoint, mDownSecondPoint, mDownBounds, mLastPoint, mLastSecondPoint, mLastResizeBounds, - mTouchSlop, mMinSize, mMaxSize); + mTouchSlop, mPipBoundsState.getMinSize(), mPipBoundsState.getMaxSize()); mOngoingPinchToResize = mAllowGesture; return mAllowGesture; } @@ -407,16 +396,19 @@ public class PipResizeGestureHandler implements return; } + final Point minSize = mPipBoundsState.getMinSize(); + final Point maxSize = mPipBoundsState.getMaxSize(); + // If user resize is pretty close to max size, just auto resize to max. - if (mLastResizeBounds.width() >= PINCH_RESIZE_AUTO_MAX_RATIO * mMaxSize.x - || mLastResizeBounds.height() >= PINCH_RESIZE_AUTO_MAX_RATIO * mMaxSize.y) { - resizeRectAboutCenter(mLastResizeBounds, mMaxSize.x, mMaxSize.y); + if (mLastResizeBounds.width() >= PINCH_RESIZE_AUTO_MAX_RATIO * maxSize.x + || mLastResizeBounds.height() >= PINCH_RESIZE_AUTO_MAX_RATIO * maxSize.y) { + resizeRectAboutCenter(mLastResizeBounds, maxSize.x, maxSize.y); } // If user resize is smaller than min size, auto resize to min - if (mLastResizeBounds.width() < mMinSize.x - || mLastResizeBounds.height() < mMinSize.y) { - resizeRectAboutCenter(mLastResizeBounds, mMinSize.x, mMinSize.y); + if (mLastResizeBounds.width() < minSize.x + || mLastResizeBounds.height() < minSize.y) { + resizeRectAboutCenter(mLastResizeBounds, minSize.x, minSize.y); } // get the current movement bounds @@ -472,15 +464,6 @@ public class PipResizeGestureHandler implements mInputMonitor.pilferPointers(); } - - void updateMaxSize(int maxX, int maxY) { - mMaxSize.set(maxX, maxY); - } - - void updateMinSize(int minX, int minY) { - mMinSize.set(minX, minY); - } - void setOhmOffset(int offset) { mOhmOffset = offset; } @@ -568,8 +551,6 @@ public class PipResizeGestureHandler implements pw.println(innerPrefix + "mEnableDragCornerResize=" + mEnableDragCornerResize); pw.println(innerPrefix + "mThresholdCrossed=" + mThresholdCrossed); pw.println(innerPrefix + "mOhmOffset=" + mOhmOffset); - pw.println(innerPrefix + "mMinSize=" + mMinSize); - pw.println(innerPrefix + "mMaxSize=" + mMaxSize); } class PipResizeInputEventReceiver extends BatchedInputEventReceiver { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java index 72346b335a8e..6fdfecaf15d5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java @@ -230,10 +230,7 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha pipBoundsState, mTouchState, mPipScheduler, mPipTransitionState, pipUiEventLogger, menuController, this::getMovementBounds, mPipDisplayLayoutState, pipDesktopState, mainExecutor, mPipPerfHintController); - mPipBoundsState.addOnAspectRatioChangedCallback(aspectRatio -> { - updateMinMaxSize(aspectRatio); - onAspectRatioChanged(); - }); + mPipBoundsState.addOnAspectRatioChangedCallback(aspectRatio -> onAspectRatioChanged()); mMoveOnShelVisibilityChanged = () -> { if (mIsImeShowing && mImeHeight > mShelfHeight) { @@ -418,15 +415,6 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha mMainExecutor.executeDelayed(mMoveOnShelVisibilityChanged, PIP_KEEP_CLEAR_AREAS_DELAY); } - /** - * Called when SysUI state changed. - * - * @param isSysUiStateValid Is SysUI valid or not. - */ - public void onSystemUiStateChanged(boolean isSysUiStateValid) { - mPipResizeGestureHandler.onSystemUiStateChanged(isSysUiStateValid); - } - void adjustBoundsForRotation(Rect outBounds, Rect curBounds, Rect insetBounds) { final Rect toMovementBounds = new Rect(); mPipBoundsAlgorithm.getMovementBounds(outBounds, insetBounds, toMovementBounds, 0); @@ -480,8 +468,6 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha mPipBoundsState.getExpandedBounds(), insetBounds, expandedMovementBounds, bottomOffset); - updatePipSizeConstraints(normalBounds, aspectRatio); - // The extra offset does not really affect the movement bounds, but are applied based on the // current state (ime showing, or shelf offset) when we need to actually shift int extraOffset = Math.max( @@ -507,35 +493,6 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha } /** - * Update the values for min/max allowed size of picture in picture window based on the aspect - * ratio. - * @param aspectRatio aspect ratio to use for the calculation of min/max size - */ - public void updateMinMaxSize(float aspectRatio) { - updatePipSizeConstraints(mPipBoundsState.getNormalBounds(), - aspectRatio); - } - - private void updatePipSizeConstraints(Rect normalBounds, - float aspectRatio) { - if (mPipResizeGestureHandler.isUsingPinchToZoom()) { - updatePinchResizeSizeConstraints(aspectRatio); - } else { - mPipResizeGestureHandler.updateMinSize(normalBounds.width(), normalBounds.height()); - mPipResizeGestureHandler.updateMaxSize(mPipBoundsState.getExpandedBounds().width(), - mPipBoundsState.getExpandedBounds().height()); - } - } - - private void updatePinchResizeSizeConstraints(float aspectRatio) { - mPipBoundsState.updateMinMaxSize(aspectRatio); - mPipResizeGestureHandler.updateMinSize(mPipBoundsState.getMinSize().x, - mPipBoundsState.getMinSize().y); - mPipResizeGestureHandler.updateMaxSize(mPipBoundsState.getMaxSize().x, - mPipBoundsState.getMaxSize().y); - } - - /** * TODO Add appropriate description */ public void onRegistrationChanged(boolean isRegistered) { |