From ea85559328664a35c0c69ac68794120295f03fe1 Mon Sep 17 00:00:00 2001 From: movte <212824502@qq.com> Date: Tue, 17 Dec 2024 21:27:18 +0800 Subject: [PATCH] Fix the issue where the long-press trigger delay does not refresh properly. --- .../customcontrols/mouse/LeftClickGesture.java | 7 ++++++- .../customcontrols/mouse/RightClickGesture.java | 9 +++++++-- .../customcontrols/mouse/ValidatorGesture.java | 12 +++++++----- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/LeftClickGesture.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/LeftClickGesture.java index 38ffef803b..ef93c222bb 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/LeftClickGesture.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/LeftClickGesture.java @@ -17,7 +17,7 @@ public class LeftClickGesture extends ValidatorGesture { private boolean mMouseActivated; public LeftClickGesture(Handler handler) { - super(handler, LauncherPreferences.PREF_LONGPRESS_TRIGGER); + super(handler); } public final void inputEvent() { @@ -27,6 +27,11 @@ public final void inputEvent() { } } + @Override + protected int getDelayValue() { + return LauncherPreferences.PREF_LONGPRESS_TRIGGER; + } + @Override public boolean checkAndTrigger() { boolean fingerStill = LeftClickGesture.isFingerStill(mGestureStartX, mGestureStartY, mGestureEndX, mGestureEndY, FINGER_STILL_THRESHOLD); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/RightClickGesture.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/RightClickGesture.java index d24874f7ed..39dfa965fb 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/RightClickGesture.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/RightClickGesture.java @@ -6,12 +6,12 @@ import org.lwjgl.glfw.CallbackBridge; -public class RightClickGesture extends ValidatorGesture{ +public class RightClickGesture extends ValidatorGesture { private boolean mGestureEnabled = true; private boolean mGestureValid = true; private float mGestureStartX, mGestureStartY, mGestureEndX, mGestureEndY; public RightClickGesture(Handler mHandler) { - super(mHandler, 150); + super(mHandler); } public final void inputEvent() { @@ -29,6 +29,11 @@ public void setMotion(float deltaX, float deltaY) { mGestureEndY += deltaY; } + @Override + protected int getDelayValue() { + return 150; + } + @Override public boolean checkAndTrigger() { // If the validate() method was called, it means that the user held on for too long. The cancellation should be ignored. diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/ValidatorGesture.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/ValidatorGesture.java index 20956d5675..c43817e05b 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/ValidatorGesture.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/ValidatorGesture.java @@ -9,16 +9,13 @@ public abstract class ValidatorGesture implements Runnable{ private final Handler mHandler; private boolean mGestureActive; - private final int mRequiredDuration; /** * @param mHandler the Handler that will be used for calling back the checkAndTrigger() method. * This Handler should run on the same thread as the callee of submit()/cancel() - * @param mRequiredDuration the duration after which the class will call checkAndTrigger(). */ - public ValidatorGesture(Handler mHandler, int mRequiredDuration) { + public ValidatorGesture(Handler mHandler) { this.mHandler = mHandler; - this.mRequiredDuration = mRequiredDuration; } /** @@ -28,7 +25,7 @@ public ValidatorGesture(Handler mHandler, int mRequiredDuration) { */ public final boolean submit() { if(mGestureActive) return false; - mHandler.postDelayed(this, mRequiredDuration); + mHandler.postDelayed(this, getDelayValue()); mGestureActive = true; return true; } @@ -54,6 +51,11 @@ public final void run() { onGestureCancelled(false); } + /** + * @return the duration after which the class will call checkAndTrigger(). + */ + protected abstract int getDelayValue(); + /** * This method will be called after mRequiredDuration milliseconds, if the gesture was not cancelled. * @return false if you want to mark this gesture as "inactive"