From 13cad686ec114ff0b4170941464e7383ce6ad52e Mon Sep 17 00:00:00 2001 From: artdeell Date: Mon, 8 Apr 2024 11:57:45 -0400 Subject: [PATCH] Fix[input]: ignore the right click gesture for non-fresh inputs --- .../customcontrols/mouse/InGameEventProcessor.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGameEventProcessor.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGameEventProcessor.java index 7d1a55550..a5838a458 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGameEventProcessor.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGameEventProcessor.java @@ -11,6 +11,7 @@ import org.lwjgl.glfw.CallbackBridge; public class InGameEventProcessor implements TouchEventProcessor { private final Handler mGestureHandler = new Handler(Looper.getMainLooper()); private final double mSensitivity; + private boolean mEventTransitioned = true; private final PointerTracker mTracker = new PointerTracker(); private final LeftClickGesture mLeftClickGesture = new LeftClickGesture(mGestureHandler); private final RightClickGesture mRightClickGesture = new RightClickGesture(mGestureHandler); @@ -25,6 +26,7 @@ public class InGameEventProcessor implements TouchEventProcessor { case MotionEvent.ACTION_DOWN: mTracker.startTracking(motionEvent); if(LauncherPreferences.PREF_DISABLE_GESTURES) break; + mEventTransitioned = false; checkGestures(); break; case MotionEvent.ACTION_MOVE: @@ -51,10 +53,14 @@ public class InGameEventProcessor implements TouchEventProcessor { private void checkGestures() { mLeftClickGesture.inputEvent(); - mRightClickGesture.inputEvent(); + // Only register right click events if it's a fresh event stream, not one after a transition. + // This is done to avoid problems when people hold the button for just a bit too long after + // exiting a menu for example. + if(!mEventTransitioned) mRightClickGesture.inputEvent(); } private void cancelGestures(boolean isSwitching) { + mEventTransitioned = true; mLeftClickGesture.cancel(isSwitching); mRightClickGesture.cancel(isSwitching); }