fixed updating multiple pause button gadgets when toggling pause mode
authorHolger Schemel <info@artsoft.org>
Wed, 18 Sep 2019 22:04:25 +0000 (00:04 +0200)
committerHolger Schemel <info@artsoft.org>
Wed, 18 Sep 2019 22:04:44 +0000 (00:04 +0200)
src/game.c
src/game.h
src/tape.c

index 79fb451..15cd412 100644 (file)
@@ -15711,8 +15711,6 @@ void MapUndoRedoButtons(void)
 
   MapGadget(game_gadget[GAME_CTRL_ID_UNDO]);
   MapGadget(game_gadget[GAME_CTRL_ID_REDO]);
-
-  ModifyGadget(game_gadget[GAME_CTRL_ID_PAUSE2], GDI_CHECKED, TRUE, GDI_END);
 }
 
 void UnmapUndoRedoButtons(void)
@@ -15722,8 +15720,21 @@ void UnmapUndoRedoButtons(void)
 
   MapGameButtonsAtSamePosition(GAME_CTRL_ID_UNDO);
   MapGameButtonsAtSamePosition(GAME_CTRL_ID_REDO);
+}
+
+void ModifyPauseButtons(void)
+{
+  static int ids[] =
+  {
+    GAME_CTRL_ID_PAUSE,
+    GAME_CTRL_ID_PAUSE2,
+    GAME_CTRL_ID_PANEL_PAUSE,
+    -1
+  };
+  int i;
 
-  ModifyGadget(game_gadget[GAME_CTRL_ID_PAUSE2], GDI_CHECKED, FALSE, GDI_END);
+  for (i = 0; ids[i] > -1; i++)
+    ModifyGadget(game_gadget[ids[i]], GDI_CHECKED, tape.pausing, GDI_END);
 }
 
 static void MapGameButtonsExt(boolean on_tape)
index 5a96d4f..9bfa0cd 100644 (file)
@@ -452,6 +452,7 @@ void CreateGameButtons(void);
 void FreeGameButtons(void);
 void MapUndoRedoButtons(void);
 void UnmapUndoRedoButtons(void);
+void ModifyPauseButtons(void);
 void MapGameButtons(void);
 void UnmapGameButtons(void);
 void RedrawGameButtons(void);
index aeac3d3..43c3c30 100644 (file)
@@ -764,14 +764,17 @@ void TapeTogglePause(boolean toggle_mode)
     return;
   }
 
-  if (setup.show_snapshot_buttons &&
-      game_status == GAME_MODE_PLAYING &&
-      CheckEngineSnapshotList())
+  if (game_status == GAME_MODE_PLAYING)
   {
-    if (tape.pausing)
-      MapUndoRedoButtons();
-    else if (!tape.single_step)
-      UnmapUndoRedoButtons();
+    if (setup.show_snapshot_buttons && CheckEngineSnapshotList())
+    {
+      if (tape.pausing)
+       MapUndoRedoButtons();
+      else if (!tape.single_step)
+       UnmapUndoRedoButtons();
+    }
+
+    ModifyPauseButtons();
   }
 }