Merge "Only handle resize touches if starting gesture within resize area" into rvc-dev am: dccddad314

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12039361

Change-Id: I790650bb750c5854964ca779eebeff9104d1dde5
This commit is contained in:
Winson Chung
2020-06-30 07:44:09 +00:00
committed by Automerger Merge Worker
2 changed files with 33 additions and 10 deletions

View File

@@ -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());

View File

@@ -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);
}
}
}