diff options
| author | eska | 2016-11-23 23:53:38 +0100 |
|---|---|---|
| committer | eska | 2016-12-03 15:33:59 +0100 |
| commit | 49e22aa83ff5523ab6e976f04cac067de21e4a5e (patch) | |
| tree | 9503dc188612c94516cebc918765350075809d15 /platform/javascript/javascript_main.cpp | |
| parent | 6d86a63648c65c9e5e72747130ee3cb0ed49ab4c (diff) | |
| download | godot-49e22aa83ff5523ab6e976f04cac067de21e4a5e.tar.gz godot-49e22aa83ff5523ab6e976f04cac067de21e4a5e.tar.zst godot-49e22aa83ff5523ab6e976f04cac067de21e4a5e.zip | |
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 af12384bc..586ccc9b4 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); |
