X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=d9ba05860c5c30011bd6591314127116e1766af6;hb=507d04844c31765e258da41a04f323b5f65f7c04;hp=2810e84f11643b1cb09a99bde0faf69efb90dafc;hpb=63ede61180a6bb7e9efa77d05dfcf5e5c5b9487e;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 2810e84f..d9ba0586 100644 --- a/src/events.c +++ b/src/events.c @@ -2204,6 +2204,9 @@ void HandleKey(Key key, int key_status) // reset flag to ignore repeated "key pressed" events after key release ignore_repeated_key = FALSE; + // send key release event to global animation event handling + HandleGlobalAnimClicks(-1, -1, KEY_RELEASED, FALSE); + return; } @@ -2556,10 +2559,10 @@ static void HandleTileCursor(int dx, int dy, int button) int new_xpos = tile_cursor.xpos + dx; int new_ypos = tile_cursor.ypos + dy; - if (!IN_LEV_FIELD(new_xpos, old_ypos)) + if (!IN_LEV_FIELD(new_xpos, old_ypos) || !IN_SCR_FIELD(new_xpos, old_ypos)) new_xpos = old_xpos; - if (!IN_LEV_FIELD(old_xpos, new_ypos)) + if (!IN_LEV_FIELD(old_xpos, new_ypos) || !IN_SCR_FIELD(old_xpos, new_ypos)) new_ypos = old_ypos; SetTileCursorTargetXY(new_xpos, new_ypos); @@ -2614,12 +2617,15 @@ void HandleJoystick(void) int up = joy & JOY_UP; int down = joy & JOY_DOWN; int button = joy & JOY_BUTTON; - int newbutton = (AnyJoystickButton() == JOY_BUTTON_NEW_PRESSED); + int anybutton = AnyJoystickButton(); + int newbutton = (anybutton == JOY_BUTTON_NEW_PRESSED); int dx = (left ? -1 : right ? 1 : 0); int dy = (up ? -1 : down ? 1 : 0); boolean use_delay_value_first = (joytest != joytest_last); + boolean new_button_event = (anybutton == JOY_BUTTON_NEW_PRESSED || + anybutton == JOY_BUTTON_NEW_RELEASED); - if (HandleGlobalAnimClicks(-1, -1, newbutton, FALSE)) + if (new_button_event && HandleGlobalAnimClicks(-1, -1, newbutton, FALSE)) { // do not handle this button event anymore return;