Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6760925 authored by Tony Wickham's avatar Tony Wickham
Browse files

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
parents b0738b07 848696ac
Loading
Loading
Loading
Loading
+23 −8
Original line number Diff line number Diff line
@@ -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();
        }
    }