diff options
author | eska <eska@eska.me> | 2016-11-23 23:53:38 +0100 |
---|---|---|
committer | eska <eska@eska.me> | 2016-11-30 22:02:32 +0100 |
commit | 30e9ea5a8203e0f059c533def90c42f7ca7dc7c5 (patch) | |
tree | abbcffffff1c34933ef14dc31e47b9b170863178 /platform/javascript/javascript_main.cpp | |
parent | a6ae3204fb577cc61f09fa15c803669d477e2f42 (diff) | |
download | redot-engine-30e9ea5a8203e0f059c533def90c42f7ca7dc7c5.tar.gz |
Fix some mouse bugs in WebAssembly/asm.js
- Emit mouse wheel release events
- Set button masks, fixes #5092
Diffstat (limited to 'platform/javascript/javascript_main.cpp')
-rw-r--r-- | platform/javascript/javascript_main.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp index af12384bc9..586ccc9b4e 100644 --- a/platform/javascript/javascript_main.cpp +++ b/platform/javascript/javascript_main.cpp @@ -66,11 +66,12 @@ static void _glut_mouse_button(int button, int state, int x, int y) { if (ev.mouse_button.button_index<4) { if (ev.mouse_button.pressed) { - _mouse_button_mask|=1<<ev.mouse_button.button_index; + _mouse_button_mask |= 1 << (ev.mouse_button.button_index-1); } else { - _mouse_button_mask&=~(1<<ev.mouse_button.button_index); + _mouse_button_mask &= ~(1 << (ev.mouse_button.button_index-1)); } } + ev.mouse_button.button_mask=_mouse_button_mask; uint32_t m = glutGetModifiers(); ev.mouse_button.mod.alt=(m&GLUT_ACTIVE_ALT)!=0; @@ -79,6 +80,11 @@ static void _glut_mouse_button(int button, int state, int x, int y) { os->push_input(ev); + if (ev.mouse_button.button_index==BUTTON_WHEEL_UP || ev.mouse_button.button_index==BUTTON_WHEEL_DOWN) { + // GLUT doesn't send release events for mouse wheel, so send manually + ev.mouse_button.pressed=false; + os->push_input(ev); + } } @@ -162,7 +168,6 @@ int main(int argc, char *argv[]) { glutMouseFunc(_glut_mouse_button); glutMotionFunc(_glut_mouse_motion); - glutMotionFunc(_glut_mouse_motion); glutPassiveMotionFunc(_glut_mouse_motion); |