Loading src/com/android/launcher3/dragndrop/DragController.java +23 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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) { Loading @@ -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; } Loading Loading @@ -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: Loading Loading @@ -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(); } } Loading Loading
src/com/android/launcher3/dragndrop/DragController.java +23 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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) { Loading @@ -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; } Loading Loading @@ -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: Loading Loading @@ -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(); } } Loading