X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=0fa609aa4b8146850fe1bb10c1fba0e3ca6156fd;hp=31d45abff4cc3946e05589270ad869d05765e3d4;hb=453e58ce94fd8f1257b08c6ee273382ede528f1a;hpb=ac173e23840c40f57ca10fc76e5267064faeda55 diff --git a/src/events.c b/src/events.c index 31d45abf..0fa609aa 100644 --- a/src/events.c +++ b/src/events.c @@ -405,7 +405,10 @@ void ClearPlayerAction(void) // simulate key release events for still pressed keys key_joystick_mapping = 0; for (i = 0; i < MAX_PLAYERS; i++) + { stored_player[i].action = 0; + stored_player[i].snap_action = 0; + } ClearJoystickState(); ClearPlayerMouseAction(); @@ -683,6 +686,7 @@ static struct SDL_FingerID finger_id; int counter; Key key; + byte action; } touch_info[NUM_TOUCH_FINGERS]; static void HandleFingerEvent_VirtualButtons(FingerEvent *event) @@ -811,6 +815,9 @@ static void HandleFingerEvent_VirtualButtons(FingerEvent *event) { HandleKey(touch_info[i].key, KEY_RELEASED); + // undraw previous grid button when moving finger away + overlay.grid_button_action &= ~touch_info[i].action; + Error(ERR_DEBUG, "=> key == '%s', key_status == '%s' [slot %d] [2]", getKeyNameFromKey(touch_info[i].key), "KEY_RELEASED", i); } @@ -828,6 +835,7 @@ static void HandleFingerEvent_VirtualButtons(FingerEvent *event) touch_info[i].finger_id = event->fingerId; touch_info[i].counter = Counter(); touch_info[i].key = key; + touch_info[i].action = grid_button_action; } else { @@ -843,6 +851,7 @@ static void HandleFingerEvent_VirtualButtons(FingerEvent *event) touch_info[i].finger_id = 0; touch_info[i].counter = 0; touch_info[i].key = 0; + touch_info[i].action = JOY_NO_ACTION; } } }