X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=e4aec1910f5a476d04e52313193ac41e8c4865a9;hb=2af7c68549b9aeb85ddce753062604f54f0b0b49;hp=270295d0b8503204ee67b2d283011bfa272b92b1;hpb=5b1f4e2d668d8cc065ce0f95f9bbcf09d9497036;p=xboard.git diff --git a/xboard.c b/xboard.c index 270295d..e4aec19 100644 --- a/xboard.c +++ b/xboard.c @@ -2175,10 +2175,13 @@ XBoard square size (hint): %d\n\ /* For the coordFont, use the 0th font of the fontset. */ XFontSet coordFontSet = CreateFontSet(appData.coordFont); XFontStruct **font_struct_list; + XFontSetExtents *fontSize; char **font_name_list; XFontsOfFontSet(coordFontSet, &font_struct_list, &font_name_list); coordFontID = XLoadFont(xDisplay, font_name_list[0]); coordFontStruct = XQueryFont(xDisplay, coordFontID); + fontSize = XExtentsOfFontSet(fontSet); // [HGM] figure out how much vertical space font takes + textHeight = fontSize->max_logical_extent.height + 5; // add borderWidth } #else appData.font = FindFont(appData.font, fontPxlSize); @@ -2460,8 +2463,8 @@ XBoard square size (hint): %d\n\ fprintf(stderr, _("%s: messageWidget geometry error %d %d %d %d %d\n"), programName, gres, w, h, wr, hr); } - textHeight = hr; // [HGM] save height for use in generic popup /* !! end hack */ + if(!textHeight) textHeight = hr; // [HGM] if !NLS textHeight is still undefined, and we grab it from here XtSetArg(args[0], XtNleft, XtChainLeft); // [HGM] glue ends for good run-time sizing XtSetArg(args[1], XtNright, XtChainRight); XtSetValues(messageWidget, args, 2); @@ -3888,6 +3891,39 @@ MenuBarSelect (Widget w, caddr_t addr, caddr_t index) (proc)(NULL, NULL, NULL, NULL); } +static void +MenuEngineSelect (Widget w, caddr_t addr, caddr_t index) +{ + RecentEngineEvent((int) addr); +} + +void +AppendEnginesToMenu (Widget menu, char *list) +{ + int i=0, j; + Widget entry; + MenuItem *mi; + Arg args[16]; + char *p; + + if(appData.recentEngines <= 0) return; + recentEngines = strdup(list); + j = 0; + XtSetArg(args[j], XtNleftMargin, 20); j++; + XtSetArg(args[j], XtNrightMargin, 20); j++; + while (*list) { + p = strchr(list, '\n'); if(p == NULL) break; + if(i == 0) XtCreateManagedWidget(_("----"), smeLineObjectClass, menu, args, j); // at least one valid item to add + *p = 0; + XtSetArg(args[j], XtNlabel, XtNewString(list)); + entry = XtCreateManagedWidget("engine", smeBSBObjectClass, menu, args, j+1); + XtAddCallback(entry, XtNcallback, + (XtCallbackProc) MenuEngineSelect, + (caddr_t) i); + i++; *p = '\n'; list = p + 1; + } +} + void CreateMenuBarPopup (Widget parent, String name, Menu *mb) { @@ -3916,6 +3952,7 @@ CreateMenuBarPopup (Widget parent, String name, Menu *mb) } mi++; } + if(!strcmp(mb->name, "Engine")) AppendEnginesToMenu(menu, appData.recentEngineList); } Widget