diff options
Diffstat (limited to 'src/client/input.cc')
-rw-r--r-- | src/client/input.cc | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/src/client/input.cc b/src/client/input.cc index 0ffffad..72fa5af 100644 --- a/src/client/input.cc +++ b/src/client/input.cc @@ -804,6 +804,10 @@ void frame() case SDL_MOUSEBUTTONDOWN: key = keyboard->press(512 + event.button.button); pressed = true; + + last_key = key; // remember the last key that was pressed + last_key_time = client()->time(); + if ((key && console_key_pressed(key)) || ui::root()->input_mouse_button(true, event.button.button)) { key = 0; @@ -830,25 +834,31 @@ void frame() break; case SDL_MOUSEWHEEL: + if (event.wheel.y > 0) + { + key = keyboard->press(600); + } else if (event.wheel.y < 0) + { + key = keyboard->press(601); + } + pressed = true; + + last_key = key; // remember the last key that was pressed + last_key_time = client()->time(); + if (ui::root()->input_mouse_wheel(math::Vector2f((float)event.wheel.x, (float) event.wheel.y))) { key = 0; - } else - { - if (event.wheel.y > 0) - { - key = keyboard->press(600); - } else if (event.wheel.y < 0) - { - key = keyboard->press(601); - } - pressed = true; } break; case SDL_JOYBUTTONDOWN: key = keyboard->press(564 + event.jbutton.button); pressed = true; + + last_key = key; // remember the last key that was pressed + last_key_time = client()->time(); + break; case SDL_JOYBUTTONUP: @@ -865,6 +875,10 @@ void frame() keyboard_modifiers = event.key.keysym.mod; key = keyboard->press(event.key.keysym.scancode); pressed = true; + + last_key = key; // remember the last key that was pressed + last_key_time = client()->time(); + if ((key && console_key_pressed(key)) || ui::root()->input_key(true, Keyboard::translate_keysym(event.key.keysym.sym, keyboard_modifiers), keyboard_modifiers)) { key = 0; @@ -891,8 +905,6 @@ void frame() if (key) { if (pressed) { key_pressed(key); - last_key = key; // remember the last key that was pressed - last_key_time = client()->time(); } else { key_released(key); } |