From 17d7e6a142500a80ba6628a32eca792c44bbbdb7 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Mon, 17 Oct 2016 03:57:32 +0200 Subject: Fix Keyboard Input Hangs when using modifiers Main input parsing loop only update actions for keyboard if the state has changed. `InputMap::event_is_action` now ignores keyboard modifiers if the event is not pressed. Clarify difference between `InputMap::action_has_event` and `InputMap::event_is_action` in docs. Fixes #6388. --- main/input_default.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'main/input_default.cpp') diff --git a/main/input_default.cpp b/main/input_default.cpp index c60fcd224..6c2c6ebbb 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -377,13 +377,13 @@ void InputDefault::parse_input_event(const InputEvent& p_event) { if (InputMap::get_singleton()->event_is_action(p_event,E->key())) { - Action action; - action.fixed_frame=OS::get_singleton()->get_fixed_frames(); - action.idle_frame=OS::get_singleton()->get_idle_frames(); - action.pressed=p_event.is_pressed(); - - action_state[E->key()]=action; - + if(is_action_pressed(E->key()) != p_event.is_pressed()) { + Action action; + action.fixed_frame=OS::get_singleton()->get_fixed_frames(); + action.idle_frame=OS::get_singleton()->get_idle_frames(); + action.pressed=p_event.is_pressed(); + action_state[E->key()]=action; + } } } } -- cgit v1.2.3-70-g09d2