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

Commit dcacfd7d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use GestureDetector in WorkspaceTouchListener" into ub-launcher3-qt-dev

parents 4ec6e44c dff3beb6
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -20,12 +20,12 @@ import static android.view.MotionEvent.ACTION_DOWN;
import static android.view.MotionEvent.ACTION_MOVE;
import static android.view.MotionEvent.ACTION_POINTER_UP;
import static android.view.MotionEvent.ACTION_UP;
import static android.view.ViewConfiguration.getLongPressTimeout;

import static com.android.launcher3.LauncherState.NORMAL;

import android.graphics.PointF;
import android.graphics.Rect;
import android.view.GestureDetector;
import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;
import android.view.View;
@@ -45,7 +45,8 @@ import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
/**
 * Helper class to handle touch on empty space in workspace and show options popup on long press
 */
public class WorkspaceTouchListener implements OnTouchListener, Runnable {
public class WorkspaceTouchListener extends GestureDetector.SimpleOnGestureListener
        implements OnTouchListener {

    /**
     * STATE_PENDING_PARENT_INFORM is the state between longPress performed & the next motionEvent.
@@ -66,16 +67,21 @@ public class WorkspaceTouchListener implements OnTouchListener, Runnable {

    private int mLongPressState = STATE_CANCELLED;

    private final GestureDetector mGestureDetector;

    public WorkspaceTouchListener(Launcher launcher, Workspace workspace) {
        mLauncher = launcher;
        mWorkspace = workspace;
        // Use twice the touch slop as we are looking for long press which is more
        // likely to cause movement.
        mTouchSlop = 2 * ViewConfiguration.get(launcher).getScaledTouchSlop();
        mGestureDetector = new GestureDetector(workspace.getContext(), this);
    }

    @Override
    public boolean onTouch(View view, MotionEvent ev) {
        mGestureDetector.onTouchEvent(ev);

        int action = ev.getActionMasked();
        if (action == ACTION_DOWN) {
            // Check if we can handle long press.
@@ -97,7 +103,6 @@ public class WorkspaceTouchListener implements OnTouchListener, Runnable {
            if (handleLongPress) {
                mLongPressState = STATE_REQUESTED;
                mTouchDownPoint.set(ev.getX(), ev.getY());
                mWorkspace.postDelayed(this, getLongPressTimeout());
            }

            mWorkspace.onTouchEvent(ev);
@@ -143,9 +148,6 @@ public class WorkspaceTouchListener implements OnTouchListener, Runnable {
            }
        }

        if (action == ACTION_UP || action == ACTION_CANCEL) {
            cancelLongPress();
        }
        return result;
    }

@@ -155,12 +157,11 @@ public class WorkspaceTouchListener implements OnTouchListener, Runnable {
    }

    private void cancelLongPress() {
        mWorkspace.removeCallbacks(this);
        mLongPressState = STATE_CANCELLED;
    }

    @Override
    public void run() {
    public void onLongPress(MotionEvent event) {
        if (mLongPressState == STATE_REQUESTED) {
            if (canHandleLongPress()) {
                mLongPressState = STATE_PENDING_PARENT_INFORM;