X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=c748bbcb41ebb5fa7ace9f22c4fa70f67f90aaf8;hb=5f189129bbc68852e3eb8b8d66c0b01b7f9da8fc;hp=7a366aa7fc4e24b7f121fd7a7f41df31ae168923;hpb=7b3e068e43bcfeb38ce390d5d1c3b1a13c81cb55;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 7a366aa7..c748bbcb 100644 --- a/src/events.c +++ b/src/events.c @@ -108,9 +108,8 @@ boolean SkipPressedMouseMotionEvent(const Event *event) if (event->type != EVENT_MOTIONNOTIFY) return FALSE; - /* only skip motion events with pressed button outside level editor */ - if (button_status == MB_RELEASED || - game_status == GAME_MODE_EDITOR || game_status == GAME_MODE_PLAYING) + /* only skip motion events with pressed button outside the game */ + if (button_status == MB_RELEASED || game_status == GAME_MODE_PLAYING) return FALSE; if (PendingEvent()) @@ -131,7 +130,7 @@ boolean SkipPressedMouseMotionEvent(const Event *event) when using SDL with properly installed event filter, this function can be replaced with a simple "NextEvent()" call, but it doesn't hurt either */ -static boolean NextValidEvent(Event *event) +boolean NextValidEvent(Event *event) { while (PendingEvent()) { @@ -408,9 +407,6 @@ void HandleButtonEvent(ButtonEvent *event) void HandleMotionEvent(MotionEvent *event) { - if (!PointerInWindow(window)) - return; /* window and pointer are on different screens */ - if (button_status == MB_RELEASED && game_status != GAME_MODE_EDITOR) return; @@ -933,12 +929,14 @@ void HandleWindowManagerEvent(Event *event) void HandleButton(int mx, int my, int button, int button_nr) { static int old_mx = 0, old_my = 0; + boolean button_hold = FALSE; if (button < 0) { mx = old_mx; my = old_my; button = -button; + button_hold = TRUE; } else { @@ -947,6 +945,7 @@ void HandleButton(int mx, int my, int button, int button_nr) } #if defined(PLATFORM_ANDROID) + // !!! for now, do not handle gadgets when playing -- maybe fix this !!! if (game_status != GAME_MODE_PLAYING && HandleGadgets(mx, my, button)) { @@ -961,6 +960,9 @@ void HandleButton(int mx, int my, int button, int button_nr) } #endif + if (button_hold && game_status == GAME_MODE_PLAYING && tape.pausing) + return; + /* do not use scroll wheel button events for anything other than gadgets */ if (IS_WHEEL_BUTTON(button_nr)) return; @@ -1596,7 +1598,8 @@ void HandleKey(Key key, int key_status) void HandleNoEvent() { - if (button_status && game_status != GAME_MODE_PLAYING) + // if (button_status && game_status != GAME_MODE_PLAYING) + if (button_status && (game_status != GAME_MODE_PLAYING || tape.pausing)) { HandleButton(0, 0, -button_status, button_status); }