Fix(gui event processor): remove double clicks, handle all res when tracking still finger, instant clicks (#5635)

This commit is contained in:
Mathias Boulay 2024-06-20 22:33:00 +02:00 committed by GitHub
parent 856bace37c
commit d23bdb9ffa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 11 deletions

View File

@ -29,6 +29,8 @@ public class InGUIEventProcessor implements TouchEventProcessor {
@Override
public boolean processTouchEvent(MotionEvent motionEvent) {
boolean singleTap = mSingleTapDetector.onTouchEvent(motionEvent);
switch (motionEvent.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
mTracker.startTracking(motionEvent);
@ -66,13 +68,17 @@ public class InGUIEventProcessor implements TouchEventProcessor {
case MotionEvent.ACTION_UP:
mScroller.resetScrollOvershoot();
mTracker.cancelTracking();
// Handle single tap on gestures
if((!LauncherPreferences.PREF_DISABLE_GESTURES || touchpadDisplayed()) && !mIsMouseDown && singleTap) {
CallbackBridge.putMouseEventWithCoords(LwjglGlfwKeycode.GLFW_MOUSE_BUTTON_LEFT, CallbackBridge.mouseX, CallbackBridge.mouseY);
}
if(mIsMouseDown) disableMouse();
resetGesture();
}
if((!LauncherPreferences.PREF_DISABLE_GESTURES || touchpadDisplayed()) && mSingleTapDetector.onTouchEvent(motionEvent)) {
clickMouse();
}
return true;
}
@ -98,14 +104,9 @@ public class InGUIEventProcessor implements TouchEventProcessor {
mIsMouseDown = false;
}
private void clickMouse() {
CallbackBridge.sendMouseButton(LwjglGlfwKeycode.GLFW_MOUSE_BUTTON_LEFT, true);
CallbackBridge.sendMouseButton(LwjglGlfwKeycode.GLFW_MOUSE_BUTTON_LEFT, false);
}
private void setGestureStart(MotionEvent event) {
mStartX = event.getX();
mStartY = event.getY();
mStartX = event.getX() * mScaleFactor;
mStartY = event.getY() * mScaleFactor;
}
private void resetGesture() {

View File

@ -20,7 +20,7 @@ public class TapDetector {
public final static int DETECTION_METHOD_UP = 0x2;
public final static int DETECTION_METHOD_BOTH = 0x3; //Unused for now
private final static int TAP_MIN_DELTA_MS = 10;
private final static int TAP_MIN_DELTA_MS = -1;
private final static int TAP_MAX_DELTA_MS = 300;
private final static int TAP_SLOP_SQUARE_PX = (int) Tools.dpToPx(2500);