Skip to content

Commit

Permalink
Merge pull request #18473 from hrydgard/mouse-wheel-android
Browse files Browse the repository at this point in the history
Add mouse wheel scrolling support for Android to the UI
  • Loading branch information
hrydgard committed Dec 4, 2023
2 parents c1637b0 + 84d3bfc commit 0a7afc7
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Common/UI/ScrollView.cpp
Expand Up @@ -119,7 +119,7 @@ bool ScrollView::Key(const KeyInput &input) {
if (input.flags & KEY_DOWN) {
if ((input.keyCode == NKCODE_EXT_MOUSEWHEEL_UP || input.keyCode == NKCODE_EXT_MOUSEWHEEL_DOWN) &&
(input.flags & KEY_HASWHEELDELTA)) {
scrollSpeed = (float)(short)(input.flags >> 16) * 1.25f; // Fudge factor
scrollSpeed = (float)(short)(input.flags >> 16) * 1.25f; // Fudge factor. TODO: Should be moved to the backends.
}

switch (input.keyCode) {
Expand Down
20 changes: 19 additions & 1 deletion android/jni/app-android.cpp
Expand Up @@ -1235,7 +1235,25 @@ extern "C" jboolean Java_org_ppsspp_ppsspp_NativeApp_mouseWheelEvent(
JNIEnv *env, jclass, jint stick, jfloat x, jfloat y) {
if (!renderer_inited)
return false;
// TODO: Support mousewheel for android
// TODO: Mousewheel should probably be an axis instead.
int wheelDelta = y * 30.0f;
if (wheelDelta > 500) wheelDelta = 500;
if (wheelDelta < -500) wheelDelta = -500;

KeyInput key;
key.deviceId = DEVICE_ID_MOUSE;
if (wheelDelta < 0) {
key.keyCode = NKCODE_EXT_MOUSEWHEEL_DOWN;
wheelDelta = -wheelDelta;
} else {
key.keyCode = NKCODE_EXT_MOUSEWHEEL_UP;
}
// There's no separate keyup event for mousewheel events,
// so we release it with a slight delay.
key.flags = KEY_DOWN | KEY_HASWHEELDELTA | (wheelDelta << 16);
NativeKey(key);
key.flags = KEY_UP;
NativeKey(key);
return true;
}

Expand Down
2 changes: 1 addition & 1 deletion android/src/org/ppsspp/ppsspp/NativeActivity.java
Expand Up @@ -1024,7 +1024,7 @@ public boolean onGenericMotionEvent(MotionEvent event) {
// process the mouse hover movement...
return true;
case MotionEvent.ACTION_SCROLL:
NativeApp.mouseWheelEvent(event.getX(), event.getY());
NativeApp.mouseWheelEvent(event.getAxisValue(MotionEvent.AXIS_HSCROLL), event.getAxisValue(MotionEvent.AXIS_VSCROLL));
return true;
}
}
Expand Down

0 comments on commit 0a7afc7

Please sign in to comment.