diff options
author | Tony Wickham <twickham@google.com> | 2020-01-08 14:15:16 -0800 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2020-01-08 14:15:16 -0800 |
commit | b67609251412b48b3f861ca4ca42d67e8115a4e7 (patch) | |
tree | 1d8617d3d04339048802e1ac5c9be4fabae31027 /src/com/android/launcher3 | |
parent | b0738b0739dac1dc8b55e3c83e36188ba66974e9 (diff) | |
parent | 848696ac1dcf1a90492f7bc794cd05747803dbc4 (diff) | |
download | android_packages_apps_Trebuchet-b67609251412b48b3f861ca4ca42d67e8115a4e7.tar.gz android_packages_apps_Trebuchet-b67609251412b48b3f861ca4ca42d67e8115a4e7.tar.bz2 android_packages_apps_Trebuchet-b67609251412b48b3f861ca4ca42d67e8115a4e7.zip |
Merging from ub-launcher3-qt-future-dev @ build 6099678
Test: manual, presubmit on the source branch
http://x20/teams/android-launcher/merge/ub-launcher3-qt-future-dev_6099678.html
Change-Id: I205e6a8dc0042dd69d62c319c170b4bbed378c75
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r-- | src/com/android/launcher3/dragndrop/DragController.java | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/com/android/launcher3/dragndrop/DragController.java b/src/com/android/launcher3/dragndrop/DragController.java index b72fd988a..dcdf5d616 100644 --- a/src/com/android/launcher3/dragndrop/DragController.java +++ b/src/com/android/launcher3/dragndrop/DragController.java @@ -19,6 +19,7 @@ package com.android.launcher3.dragndrop; import static com.android.launcher3.AbstractFloatingView.TYPE_DISCOVERY_BOUNCE; import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY; import static com.android.launcher3.LauncherState.NORMAL; +import static com.android.launcher3.Utilities.ATLEAST_Q; import android.animation.ValueAnimator; import android.content.ComponentName; @@ -56,6 +57,12 @@ import java.util.ArrayList; public class DragController implements DragDriver.EventListener, TouchController { private static final boolean PROFILE_DRAWING_DURING_DRAG = false; + /** + * When a drag is started from a deep press, you need to drag this much farther than normal to + * end a pre-drag. See {@link DragOptions.PreDragCondition#shouldStartDrag(double)}. + */ + private static final int DEEP_PRESS_DISTANCE_FACTOR = 3; + @Thunk Launcher mLauncher; private FlingToDeleteHelper mFlingToDeleteHelper; @@ -91,9 +98,10 @@ public class DragController implements DragDriver.EventListener, TouchController private DropTarget mLastDropTarget; - @Thunk int mLastTouch[] = new int[2]; - @Thunk long mLastTouchUpTime = -1; - @Thunk int mDistanceSinceScroll = 0; + private final int[] mLastTouch = new int[2]; + private long mLastTouchUpTime = -1; + private int mLastTouchClassification; + private int mDistanceSinceScroll = 0; private int mTmpPoint[] = new int[2]; private Rect mDragLayerRect = new Rect(); @@ -204,7 +212,7 @@ public class DragController implements DragDriver.EventListener, TouchController } mLauncher.getDragLayer().performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); - dragView.show(mMotionDownX, mMotionDownY); + dragView.show(mLastTouch[0], mLastTouch[1]); mDistanceSinceScroll = 0; if (!mIsInPreDrag) { @@ -213,9 +221,7 @@ public class DragController implements DragDriver.EventListener, TouchController mOptions.preDragCondition.onPreDragStart(mDragObject); } - mLastTouch[0] = mMotionDownX; - mLastTouch[1] = mMotionDownY; - handleMoveEvent(mMotionDownX, mMotionDownY); + handleMoveEvent(mLastTouch[0], mLastTouch[1]); mLauncher.getUserEventDispatcher().resetActionDurationMillis(); return dragView; } @@ -430,6 +436,11 @@ public class DragController implements DragDriver.EventListener, TouchController final int[] dragLayerPos = getClampedDragLayerPos(ev.getX(), ev.getY()); final int dragLayerX = dragLayerPos[0]; final int dragLayerY = dragLayerPos[1]; + mLastTouch[0] = dragLayerX; + mLastTouch[1] = dragLayerY; + if (ATLEAST_Q) { + mLastTouchClassification = ev.getClassification(); + } switch (action) { case MotionEvent.ACTION_DOWN: @@ -488,8 +499,12 @@ public class DragController implements DragDriver.EventListener, TouchController mLastTouch[0] = x; mLastTouch[1] = y; + int distanceDragged = mDistanceSinceScroll; + if (ATLEAST_Q && mLastTouchClassification == MotionEvent.CLASSIFICATION_DEEP_PRESS) { + distanceDragged /= DEEP_PRESS_DISTANCE_FACTOR; + } if (mIsInPreDrag && mOptions.preDragCondition != null - && mOptions.preDragCondition.shouldStartDrag(mDistanceSinceScroll)) { + && mOptions.preDragCondition.shouldStartDrag(distanceDragged)) { callOnDragStart(); } } |