diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java | 23 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java | 20 |
2 files changed, 33 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java index a4edacecfd91..1ca53f907994 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java @@ -55,7 +55,9 @@ import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.util.DeviceConfigProxy; +import java.io.PrintWriter; import java.util.concurrent.Executor; +import java.util.function.Function; import java.util.function.Supplier; /** @@ -94,7 +96,7 @@ public class PipResizeGestureHandler { private final Rect mTmpBottomLeftCorner = new Rect(); private final Rect mTmpBottomRightCorner = new Rect(); private final Rect mDisplayBounds = new Rect(); - private final Supplier<Rect> mMovementBoundsSupplier; + private final Function<Rect, Rect> mMovementBoundsSupplier; private final Runnable mUpdateMovementBoundsRunnable; private int mDelta; @@ -113,7 +115,7 @@ public class PipResizeGestureHandler { public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler, PipMotionHelper motionHelper, DeviceConfigProxy deviceConfig, - PipTaskOrganizer pipTaskOrganizer, Supplier<Rect> movementBoundsSupplier, + PipTaskOrganizer pipTaskOrganizer, Function<Rect, Rect> movementBoundsSupplier, Runnable updateMovementBoundsRunnable, SysUiState sysUiState) { mContext = context; mDisplayId = context.getDisplayId(); @@ -244,10 +246,15 @@ public class PipResizeGestureHandler { return mTmpRegion.contains(x, y); } + public boolean willStartResizeGesture(MotionEvent ev) { + return mEnableUserResize && isInValidSysUiState() + && isWithinTouchRegion((int) ev.getRawX(), (int) ev.getRawY()); + } + private void setCtrlType(int x, int y) { final Rect currentPipBounds = mMotionHelper.getBounds(); - Rect movementBounds = mMovementBoundsSupplier.get(); + Rect movementBounds = mMovementBoundsSupplier.apply(currentPipBounds); mDisplayBounds.set(movementBounds.left, movementBounds.top, movementBounds.right + currentPipBounds.width(), @@ -353,6 +360,16 @@ public class PipResizeGestureHandler { mMinSize.set(minX, minY); } + public void dump(PrintWriter pw, String prefix) { + final String innerPrefix = prefix + " "; + pw.println(prefix + TAG); + pw.println(innerPrefix + "mAllowGesture=" + mAllowGesture); + pw.println(innerPrefix + "mIsAttached=" + mIsAttached); + pw.println(innerPrefix + "mIsEnabled=" + mIsEnabled); + pw.println(innerPrefix + "mEnableUserResize=" + mEnableUserResize); + pw.println(innerPrefix + "mThresholdCrossed=" + mThresholdCrossed); + } + class SysUiInputEventReceiver extends BatchedInputEventReceiver { SysUiInputEventReceiver(InputChannel channel, Looper looper) { super(channel, looper, Choreographer.getSfInstance()); diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java index 3e06c1eb1ca3..b6e4e1628c20 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java @@ -644,12 +644,12 @@ public class PipTouchHandler { } MotionEvent ev = (MotionEvent) inputEvent; - if (!mTouchState.isDragging() - && !mMagnetizedPip.getObjectStuckToTarget() - && !mMotionHelper.isAnimating() - && mPipResizeGestureHandler.isWithinTouchRegion( - (int) ev.getRawX(), (int) ev.getRawY())) { + if (ev.getActionMasked() == MotionEvent.ACTION_DOWN + && mPipResizeGestureHandler.willStartResizeGesture(ev)) { + // Initialize the touch state for the gesture, but immediately reset to invalidate the + // gesture mTouchState.onTouchEvent(ev); + mTouchState.reset(); return true; } @@ -1032,8 +1032,11 @@ public class PipTouchHandler { isMenuExpanded && willResizeMenu() ? mExpandedShortestEdgeSize : 0); } - private Rect getMovementBounds() { - return mMovementBounds; + private Rect getMovementBounds(Rect curBounds) { + Rect movementBounds = new Rect(); + mSnapAlgorithm.getMovementBounds(curBounds, mInsetBounds, + movementBounds, mIsImeShowing ? mImeHeight : 0); + return movementBounds; } /** @@ -1065,6 +1068,9 @@ public class PipTouchHandler { pw.println(innerPrefix + "mMovementBoundsExtraOffsets=" + mMovementBoundsExtraOffsets); mTouchState.dump(pw, innerPrefix); mMotionHelper.dump(pw, innerPrefix); + if (mPipResizeGestureHandler != null) { + mPipResizeGestureHandler.dump(pw, innerPrefix); + } } } |