summaryrefslogtreecommitdiffstats
path: root/platform/javascript/javascript_main.cpp
diff options
context:
space:
mode:
authoreska <eska@eska.me>2016-11-23 23:53:38 +0100
committereska <eska@eska.me>2016-11-30 22:02:32 +0100
commit30e9ea5a8203e0f059c533def90c42f7ca7dc7c5 (patch)
treeabbcffffff1c34933ef14dc31e47b9b170863178 /platform/javascript/javascript_main.cpp
parenta6ae3204fb577cc61f09fa15c803669d477e2f42 (diff)
downloadredot-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.cpp11
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);