fixed order of handling mouse clicks on gadgets and on global animations
authorHolger Schemel <info@artsoft.org>
Mon, 11 Jun 2018 18:03:07 +0000 (20:03 +0200)
committerHolger Schemel <info@artsoft.org>
Sun, 17 Jun 2018 22:02:49 +0000 (00:02 +0200)
Before, gadgets were checked for clicks before global animations, which
caused clickable global animations to not be clicked if a gadget at the
same position was successfully clicked (because mouse events are forced
to be off-screen afterwards).

Now, clickable global animations are checked for mouse clicks before
gadgets, and they either consume the mouse click (so a gadget at the
same position will not receive the mouse click anymore), or they are
set to "passthrough_clicks" style (so a gadget at the same position
will still receive the mouse click).

src/events.c

index b21f3706fef27c21a7d176820c7a117733aa0066..146689f614be357b1d1f6687d9bc1d5331103bd7 100644 (file)
@@ -1554,16 +1554,16 @@ void HandleButton(int mx, int my, int button, int button_nr)
      strEqual(setup.touch.control_type, TOUCH_CONTROL_FOLLOW_FINGER));
 #endif
 
-  if (handle_gadgets && HandleGadgets(mx, my, button))
+  if (HandleGlobalAnimClicks(mx, my, button))
   {
     /* do not handle this button event anymore */
-    mx = my = -32;     /* force mouse event to be outside screen tiles */
+    return;            /* force mouse event not to be handled at all */
   }
 
-  if (HandleGlobalAnimClicks(mx, my, button))
+  if (handle_gadgets && HandleGadgets(mx, my, button))
   {
     /* do not handle this button event anymore */
-    return;            /* force mouse event not to be handled at all */
+    mx = my = -32;     /* force mouse event to be outside screen tiles */
   }
 
   if (button_hold && game_status == GAME_MODE_PLAYING && tape.pausing)