From 251e90c4b358791c503c52d085b684a57636a070 Mon Sep 17 00:00:00 2001 From: artdeell Date: Sun, 7 Apr 2024 16:36:21 -0400 Subject: [PATCH] Fix[input]: make scroll gesture and swap hand more consistent --- .../src/main/java/net/kdt/pojavlaunch/Touchpad.java | 4 ++-- .../pojavlaunch/customcontrols/mouse/HotbarView.java | 10 ++++++---- .../customcontrols/mouse/InGUIEventProcessor.java | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Touchpad.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Touchpad.java index 72dee1a91..211609491 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Touchpad.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Touchpad.java @@ -93,8 +93,8 @@ public class Touchpad extends FrameLayout implements GrabListener{ case MotionEvent.ACTION_MOVE: // 2 //Scrolling feature if (!LauncherPreferences.PREF_DISABLE_GESTURES && !CallbackBridge.isGrabbing() && event.getPointerCount() >= 2) { - int hScroll = ((int) (event.getX() - mScrollLastInitialX)) / FINGER_SCROLL_THRESHOLD; - int vScroll = ((int) (event.getY() - mScrollLastInitialY)) / FINGER_SCROLL_THRESHOLD; + int hScroll = (int) ((event.getX() - mScrollLastInitialX) / FINGER_SCROLL_THRESHOLD); + int vScroll = (int) ((event.getY() - mScrollLastInitialY) / FINGER_SCROLL_THRESHOLD); if(vScroll != 0 || hScroll != 0){ CallbackBridge.sendScroll(hScroll, vScroll); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/HotbarView.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/HotbarView.java index 036b4e21c..03983eb62 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/HotbarView.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/HotbarView.java @@ -87,9 +87,7 @@ public class HotbarView extends View implements MCOptionUtils.MCOptionListener, @Override public boolean onTouchEvent(MotionEvent event) { if(!CallbackBridge.isGrabbing()) return false; - // Check if we are double-tapping to swap hands boolean hasDoubleTapped = mDoubleTapDetector.onTouchEvent(event); - if(hasDoubleTapped && !LauncherPreferences.PREF_DISABLE_SWAP_HAND) CallbackBridge.sendKeyPress(LwjglGlfwKeycode.GLFW_KEY_F); // Check if we need to cancel the drop event int actionMasked = event.getActionMasked(); @@ -100,12 +98,16 @@ public class HotbarView extends View implements MCOptionUtils.MCOptionListener, if(x < 0 || x > mWidth) return true; int hotbarIndex = (int)MathUtils.map(x, 0, mWidth, 0, HOTBAR_KEYS.length); // Check if the slot changed and we need to make a key press - if(hotbarIndex == mLastIndex) return true; + if(hotbarIndex == mLastIndex) { + // Only check for doubletapping if the slot has not changed + if(hasDoubleTapped && !LauncherPreferences.PREF_DISABLE_SWAP_HAND) CallbackBridge.sendKeyPress(LwjglGlfwKeycode.GLFW_KEY_F); + return true; + } mLastIndex = hotbarIndex; int hotbarKey = HOTBAR_KEYS[hotbarIndex]; CallbackBridge.sendKeyPress(hotbarKey); // Cancel the event since we changed hotbar slots. - mDropGesture.cancel(); + mDropGesture.cancel(); // Only resubmit the gesture only if it isn't the last event we will receive. if(!isLastEventInGesture(actionMasked)) mDropGesture.submit(); return true; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGUIEventProcessor.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGUIEventProcessor.java index add4c781a..b95eb6ccb 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGUIEventProcessor.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/InGUIEventProcessor.java @@ -12,7 +12,7 @@ public class InGUIEventProcessor implements TouchEventProcessor { private final PointerTracker mTracker = new PointerTracker(); private boolean mIsMouseDown = false; private final float mScaleFactor; - public static final int FINGER_SCROLL_THRESHOLD = (int) Tools.dpToPx(6); + public static final float FINGER_SCROLL_THRESHOLD = Tools.dpToPx(6); public InGUIEventProcessor(float scaleFactor) { mScaleFactor = scaleFactor; } @@ -34,8 +34,8 @@ public class InGUIEventProcessor implements TouchEventProcessor { if(!mIsMouseDown) enableMouse(); } else { float[] motionVector = mTracker.getMotionVector(); - int hScroll = ((int) motionVector[0]) / FINGER_SCROLL_THRESHOLD; - int vScroll = ((int) motionVector[1]) / FINGER_SCROLL_THRESHOLD; + int hScroll = (int)(motionVector[0] / FINGER_SCROLL_THRESHOLD); + int vScroll = (int)(motionVector[1] / FINGER_SCROLL_THRESHOLD); if(hScroll != 0 | vScroll != 0) CallbackBridge.sendScroll(hScroll, vScroll); } break;