|
@@ -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);
|
|
|
|
|
|
|