Grayout Machine Match menu when aborting match
authorH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 15 Oct 2015 21:41:09 +0000 (23:41 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 16 Oct 2015 11:37:31 +0000 (13:37 +0200)
Clicking the Machine Match menu item when a match or tourney is in
progress will make XBoard drop out of match mode when the game finishes.
The check mark will remain on the item until that moment. But now we
gray out the item to show that the match is scheduled for termination.

gtk/xboard.c
menus.c
winboard/winboard.c
xaw/xboard.c

index 5da2d3e..7922133 100644 (file)
@@ -1799,8 +1799,9 @@ ModeHighlight ()
     if (wname != NULL) {
        MarkMenuItem(wname, True);
     }
-    oldmode = gameMode;
+    if(oldMode == TwoMachinesPlay) EnableNamedMenuItem("Mode.MachineMatch", True);
     MarkMenuItem("Mode.MachineMatch", matchMode && matchGame < appData.matchGames);
+    oldmode = gameMode;
 
     /* Maybe all the enables should be handled here, not just this one */
     EnableNamedMenuItem("Mode.Training", gameMode == Training || gameMode == PlayFromGameFile);
diff --git a/menus.c b/menus.c
index afcbab9..4dbf016 100644 (file)
--- a/menus.c
+++ b/menus.c
@@ -257,6 +257,8 @@ QuitProc ()
 void
 MatchProc ()
 {
+    static Enables matchOff[] = { { "Mode.MachineMatch", False }, { NULL, False } };
+    if(matchMode) SetMenuEnables(matchOff);
     MatchEvent(2);
 }
 
index 971309b..1a20060 100644 (file)
@@ -5091,6 +5091,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       break;\r
 \r
     case IDM_Match: // [HGM] match: flows into next case, after setting Match Mode and nr of Games\r
+      if(matchMode) EnableMenuItem(GetMenu(hwndMain), IDM_Match, MF_BYCOMMAND|MF_GRAYED);\r
       MatchEvent(2); // distinguish from command-line-triggered case (matchMode=1)\r
       break;\r
 \r
@@ -8215,6 +8216,8 @@ ModeHighlight()
     nowChecked = 0;\r
     break;\r
   }\r
+  if(prevChecked == IDM_TwoMachine) // [HGM] 'Machine Match' might have gotten disabled when stopping match\r
+    EnableMenuItem(GetMenu(hwndMain), IDM_Match, MF_BYCOMMAND|MF_ENABLED)\r
   CheckMark(prevChecked, MF_UNCHECKED);\r
   CheckMark(nowChecked, MF_CHECKED);\r
   CheckMark(IDM_Match, matchMode && matchGame < appData.matchGames ? MF_CHECKED : MF_UNCHECKED);\r
index 8792a77..d9f0953 100644 (file)
@@ -1851,8 +1851,9 @@ ModeHighlight ()
     if (wname != NULL) {
        MarkMenuItem(wname, True);
     }
-    oldmode = gameMode;
+    if(oldMode == TwoMachinesPlay) EnableNamedMenuItem("Mode.MachineMatch", True);
     MarkMenuItem("Mode.MachineMatch", matchMode && matchGame < appData.matchGames);
+    oldmode = gameMode;
 
     /* Maybe all the enables should be handled here, not just this one */
     EnableNamedMenuItem("Mode.Training", gameMode == Training || gameMode == PlayFromGameFile);