X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=ea5312aecb1efbe79e8239e20ab69115c36a74e4;hb=0ac301d6e3c5551a5ff66baaaa8ce867bb1aceb1;hp=4755d51ff57dc975ba1a27f91d45f02f7847fe2f;hpb=9c4b703ca8d2d27df28d74f40e5f2c7515b1ca51;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 4755d51f..ea5312ae 100644 --- a/src/events.c +++ b/src/events.c @@ -304,7 +304,8 @@ void HandleMouseCursor() cursor_inside_playfield && DelayReached(&special_cursor_delay, special_cursor_delay_value)) { - if (level.game_engine_type != GAME_ENGINE_TYPE_MM) + if (level.game_engine_type != GAME_ENGINE_TYPE_MM || + tile_cursor.enabled) SetMouseCursor(CURSOR_PLAYFIELD); } } @@ -400,6 +401,7 @@ void SetPlayerMouseAction(int mx, int my, int button) { int lx = getLevelFromScreenX(mx); int ly = getLevelFromScreenY(my); + int new_button = (!local_player->mouse_action.button && button); ClearPlayerMouseAction(); @@ -412,10 +414,12 @@ void SetPlayerMouseAction(int mx, int my, int button) if (tape.recording && tape.pausing && tape.use_mouse) { - /* prevent button release or motion events from un-pausing a paused game */ - if (button && !motion_status) - TapeTogglePause(TAPE_TOGGLE_MANUAL); + /* un-pause a paused game only if mouse button was newly pressed down */ + if (new_button) + TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); } + + SetTileCursorXY(lx, ly); } void SleepWhileUnmapped()