Merge "Minor touch changes for resizing" into rvc-dev am: 813ac747b6

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

Change-Id: If182a4189a83b40edc740dcd631c4027d2a0aea9
This commit is contained in:
Winson Chung
2020-06-15 18:15:28 +00:00
committed by Automerger Merge Worker
4 changed files with 33 additions and 21 deletions

View File

@@ -260,12 +260,14 @@ public class PipResizeGestureHandler {
private void onMotionEvent(MotionEvent ev) { private void onMotionEvent(MotionEvent ev) {
int action = ev.getActionMasked(); int action = ev.getActionMasked();
float x = ev.getX();
float y = ev.getY();
if (action == MotionEvent.ACTION_DOWN) { if (action == MotionEvent.ACTION_DOWN) {
mLastResizeBounds.setEmpty(); mLastResizeBounds.setEmpty();
mAllowGesture = isWithinTouchRegion((int) ev.getX(), (int) ev.getY()); mAllowGesture = isWithinTouchRegion((int) x, (int) y);
if (mAllowGesture) { if (mAllowGesture) {
setCtrlType((int) ev.getX(), (int) ev.getY()); setCtrlType((int) x, (int) y);
mDownPoint.set(ev.getX(), ev.getY()); mDownPoint.set(x, y);
mLastDownBounds.set(mMotionHelper.getBounds()); mLastDownBounds.set(mMotionHelper.getBounds());
} }
@@ -277,20 +279,23 @@ public class PipResizeGestureHandler {
break; break;
case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_MOVE:
// Capture inputs // Capture inputs
float dx = Math.abs(ev.getX() - mDownPoint.x); if (!mThresholdCrossed
float dy = Math.abs(ev.getY() - mDownPoint.y); && Math.hypot(x - mDownPoint.x, y - mDownPoint.y) > mTouchSlop) {
if (!mThresholdCrossed && dx > mTouchSlop && dy > mTouchSlop) {
mThresholdCrossed = true; mThresholdCrossed = true;
// Reset the down to begin resizing from this point
mDownPoint.set(x, y);
mInputMonitor.pilferPointers(); mInputMonitor.pilferPointers();
} }
final Rect currentPipBounds = mMotionHelper.getBounds(); if (mThresholdCrossed) {
mLastResizeBounds.set(TaskResizingAlgorithm.resizeDrag(ev.getX(), ev.getY(), final Rect currentPipBounds = mMotionHelper.getBounds();
mDownPoint.x, mDownPoint.y, currentPipBounds, mCtrlType, mMinSize.x, mLastResizeBounds.set(TaskResizingAlgorithm.resizeDrag(x, y,
mMinSize.y, mMaxSize, true, mDownPoint.x, mDownPoint.y, currentPipBounds, mCtrlType, mMinSize.x,
mLastDownBounds.width() > mLastDownBounds.height())); mMinSize.y, mMaxSize, true,
mPipBoundsHandler.transformBoundsToAspectRatio(mLastResizeBounds); mLastDownBounds.width() > mLastDownBounds.height()));
mPipTaskOrganizer.scheduleUserResizePip(mLastDownBounds, mLastResizeBounds, mPipBoundsHandler.transformBoundsToAspectRatio(mLastResizeBounds);
null); mPipTaskOrganizer.scheduleUserResizePip(mLastDownBounds, mLastResizeBounds,
null);
}
break; break;
case MotionEvent.ACTION_UP: case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_CANCEL:

View File

@@ -200,11 +200,13 @@ public class OverviewProxyService extends CurrentUserTracker implements
mInputFocusTransferStartY = event.getY(); mInputFocusTransferStartY = event.getY();
mInputFocusTransferStartMillis = event.getEventTime(); mInputFocusTransferStartMillis = event.getEventTime();
statusBar.onInputFocusTransfer( statusBar.onInputFocusTransfer(
mInputFocusTransferStarted, 0 /* velocity */); mInputFocusTransferStarted, false /* cancel */,
0 /* velocity */);
} }
if (action == ACTION_UP || action == ACTION_CANCEL) { if (action == ACTION_UP || action == ACTION_CANCEL) {
mInputFocusTransferStarted = false; mInputFocusTransferStarted = false;
statusBar.onInputFocusTransfer(mInputFocusTransferStarted, statusBar.onInputFocusTransfer(mInputFocusTransferStarted,
action == ACTION_CANCEL,
(event.getY() - mInputFocusTransferStartY) (event.getY() - mInputFocusTransferStartY)
/ (event.getEventTime() - mInputFocusTransferStartMillis)); / (event.getEventTime() - mInputFocusTransferStartMillis));
} }
@@ -692,7 +694,8 @@ public class OverviewProxyService extends CurrentUserTracker implements
mHandler.post(()-> { mHandler.post(()-> {
mStatusBarOptionalLazy.ifPresent(statusBarLazy -> { mStatusBarOptionalLazy.ifPresent(statusBarLazy -> {
mInputFocusTransferStarted = false; mInputFocusTransferStarted = false;
statusBarLazy.get().onInputFocusTransfer(false, 0 /* velocity */); statusBarLazy.get().onInputFocusTransfer(false, true /* cancel */,
0 /* velocity */);
}); });
}); });
} }

View File

@@ -1328,11 +1328,15 @@ public class NotificationPanelViewController extends PanelViewController {
* *
* @param velocity unit is in px / millis * @param velocity unit is in px / millis
*/ */
public void stopWaitingForOpenPanelGesture(final float velocity) { public void stopWaitingForOpenPanelGesture(boolean cancel, final float velocity) {
if (mExpectingSynthesizedDown) { if (mExpectingSynthesizedDown) {
mExpectingSynthesizedDown = false; mExpectingSynthesizedDown = false;
maybeVibrateOnOpening(); if (cancel) {
fling(velocity > 1f ? 1000f * velocity : 0, true /* expand */); collapse(false /* delayed */, 1.0f /* speedUpFactor */);
} else {
maybeVibrateOnOpening();
fling(velocity > 1f ? 1000f * velocity : 0, true /* expand */);
}
onTrackingStopped(false); onTrackingStopped(false);
} }
} }

View File

@@ -2109,7 +2109,7 @@ public class StatusBar extends SystemUI implements DemoMode,
/** /**
* Called when another window is about to transfer it's input focus. * Called when another window is about to transfer it's input focus.
*/ */
public void onInputFocusTransfer(boolean start, float velocity) { public void onInputFocusTransfer(boolean start, boolean cancel, float velocity) {
if (!mCommandQueue.panelsEnabled()) { if (!mCommandQueue.panelsEnabled()) {
return; return;
} }
@@ -2117,7 +2117,7 @@ public class StatusBar extends SystemUI implements DemoMode,
if (start) { if (start) {
mNotificationPanelViewController.startWaitingForOpenPanelGesture(); mNotificationPanelViewController.startWaitingForOpenPanelGesture();
} else { } else {
mNotificationPanelViewController.stopWaitingForOpenPanelGesture(velocity); mNotificationPanelViewController.stopWaitingForOpenPanelGesture(cancel, velocity);
} }
} }