Fix recent-engines menu
authorH.G. Muller <h.g.muller@hccnet.nl>
Mon, 2 Apr 2012 17:19:30 +0000 (19:19 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 10 Apr 2012 09:39:40 +0000 (11:39 +0200)
A new primitive to create an item in a given menu was added to do this.

menus.c
menus.h
xboard.c
xboard.h

diff --git a/menus.c b/menus.c
index f802215..9d78f4c 100644 (file)
--- a/menus.c
+++ b/menus.c
@@ -872,17 +872,15 @@ AppendEnginesToMenu (char *list)
 {
     int i=0;
     char *p;
-#if 0
     if(appData.icsActive || appData.recentEngines <= 0) return;
     recentEngines = strdup(list);
     while (*list) {
        p = strchr(list, '\n'); if(p == NULL) break;
-       if(i == 0) AppendMenuItem("----", "----", NULL); // at least one valid item to add
+       if(i == 0) AppendMenuItem("----", 0); // at least one valid item to add
        *p = 0;
-       AppendMenuItem(list, "recent", (MenuProc *) i);
+       AppendMenuItem(list, i);
        i++; *p = '\n'; list = p + 1;
     }
-#endif
 }
 
 Enables icsEnables[] = {
diff --git a/menus.h b/menus.h
index fc3d8a3..cacb22c 100644 (file)
--- a/menus.h
+++ b/menus.h
@@ -73,6 +73,7 @@ typedef struct {
 
 extern Menu menuBar[];
 
+void AppendEnginesToMenu P((char *list));
 void LoadGameProc P((void));
 void LoadNextGameProc P((void));
 void LoadPrevGameProc P((void));
@@ -163,7 +164,7 @@ void EngineOutputProc P((void));
 void EvalGraphProc P((void));
 
 void CreateMainMenus P((Menu *mb));
-void AppendMenuItem P((char *text, char *name, MenuProc *action));
+void AppendMenuItem P((char *text, int n));
 void CreateMenuButton P((char *name, Menu *mb));
 MenuItem *MenuNameToItem P((char *menuName));
 void SetMenuEnables P((Enables *enab));
index 538d55e..fa5a4c4 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -1410,6 +1410,7 @@ XBoard square size (hint): %d\n\
       XtSetArg(args[1], XtNforeground, &buttonForegroundPixel);
       XtGetValues(optList[18].handle, args, 2);
     }
+    AppendEnginesToMenu(appData.recentEngineList);
 
     xBoardWindow = XtWindow(boardWidget);
 
@@ -2330,6 +2331,12 @@ MenuEngineSelect (Widget w, caddr_t addr, caddr_t index)
 }
 
 void
+AppendMenuItem (char *msg, int n)
+{
+    CreateMenuItem((Widget) optList[6].textValue, msg, (XtCallbackProc) MenuEngineSelect, n);
+}
+
+void
 SetupDropMenu ()
 {
     int i, j, count;
index 55ca7dc..6af4b11 100644 (file)
--- a/xboard.h
+++ b/xboard.h
@@ -145,6 +145,7 @@ void SendToICS P((char *buf));
 void SendToProgram P((char *message, ChessProgramState *cps));
 void SetFocus(Widget w, XtPointer data, XEvent *event, Boolean *b); // from xoptions.c
 void TypeInProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
+Widget CreateMenuItem P((Widget menu, char *msg, XtCallbackProc CB, int n));
 void WheelProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 void TabProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 void GenericMenu P((Widget w, XEvent *event, String *prms, Cardinal *nprms));