X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=260bddc28514a775551feef0ce89857636047490;hb=343ecffd7b2225ba3ff66ff0985851948e258351;hp=270295d0b8503204ee67b2d283011bfa272b92b1;hpb=5b1f4e2d668d8cc065ce0f95f9bbcf09d9497036;p=xboard.git diff --git a/xboard.c b/xboard.c index 270295d..260bddc 100644 --- a/xboard.c +++ b/xboard.c @@ -1816,6 +1816,7 @@ InitDrawingSizes (BoardSize boardSize, int flags) } } } + oldMono = -10; // kludge to force recreation of animation masks } #if HAVE_LIBXPM if(appData.monoMode != oldMono) @@ -2175,10 +2176,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 +2464,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 +3892,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 +3953,7 @@ CreateMenuBarPopup (Widget parent, String name, Menu *mb) } mi++; } + if(!strcmp(mb->name, "Engine")) AppendEnginesToMenu(menu, appData.recentEngineList); } Widget @@ -5184,7 +5222,7 @@ PromotionCallback (Widget w, XtPointer client_data, XtPointer call_data) void ErrorCallback (Widget w, XtPointer client_data, XtPointer call_data) { - errorUp = False; + dialogError = errorUp = False; XtPopdown(w = XtParent(XtParent(XtParent(w)))); XtDestroyWidget(w); if (errorExitStatus != -1) ExitEvent(errorExitStatus); @@ -5195,7 +5233,7 @@ void ErrorPopDown () { if (!errorUp) return; - errorUp = False; + dialogError = errorUp = False; XtPopdown(errorShell); XtDestroyWidget(errorShell); if (errorExitStatus != -1) ExitEvent(errorExitStatus); @@ -5218,7 +5256,7 @@ ErrorPopUp (char *title, char *label, int modal) XtSetArg(args[i], XtNtitle, title); i++; errorShell = XtCreatePopupShell("errorpopup", transientShellWidgetClass, - shellWidget, args, i); + shellUp[0] ? (dialogError = modal = TRUE, shells[0]) : shellWidget, args, i); layout = XtCreateManagedWidget(layoutName, formWidgetClass, errorShell, layoutArgs, XtNumber(layoutArgs)); @@ -6545,7 +6583,7 @@ AboutProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) snprintf(buf, sizeof(buf), _("%s%s\n\n" "Copyright 1991 Digital Equipment Corporation\n" -"Enhancements Copyright 1992-2009 Free Software Foundation\n" +"Enhancements Copyright 1992-2012 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n\n" "%s is free software and carries NO WARRANTY;" "see the file COPYING for more information."),