added handling global animations when showing envelope during tape replay
[rocksndiamonds.git] / src / tools.c
index 47c4b4f8536a52c4a6d10a51bdcc95a6e62cb4a4..741ce7fdf4ca1a5cc94bb07e43ccf871442fcaea 100644 (file)
@@ -1064,7 +1064,8 @@ void FadeIn(int fade_mask)
 void FadeOut(int fade_mask)
 {
   // update screen if areas covered by "fade_mask" and "redraw_mask" differ
-  if (!equalRedrawMasks(fade_mask, redraw_mask))
+  if (!equalRedrawMasks(fade_mask, redraw_mask) &&
+      fade_type_skip != FADE_MODE_SKIP_FADE_OUT)
     BackToFront();
 
   SetScreenStates_BeforeFadingOut();
@@ -2845,7 +2846,7 @@ void ShowEnvelope(int envelope_nr)
   AnimateEnvelope(envelope_nr, main_anim_mode, ACTION_OPENING);
 
   if (tape.playing)
-    Delay(wait_delay_value);
+    Delay_WithScreenUpdates(wait_delay_value);
   else
     WaitForEventToContinue();
 
@@ -4332,6 +4333,12 @@ static int RequestHandleEvents(unsigned int req_state)
                button_status = MB_RELEASED;
            }
 
+           if (HandleGlobalAnimClicks(mx, my, button_status, FALSE))
+           {
+             // do not handle this button event anymore
+             continue;         // force mouse event not to be handled at all
+           }
+
            // this sets 'request_gadget_id'
            HandleGadgets(mx, my, button_status);