X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxboard.c;h=40e41c80ae1837043d7f79bfc1667f5a8aabfb3a;hb=0e604fd62231e9375a446a4891efa1ede735f4d2;hp=532df061629678b69288c239f48f97e4c19f8d4c;hpb=51d32ed56ad952a7f93159bb1f3c9bc330ceb2ec;p=xboard.git diff --git a/gtk/xboard.c b/gtk/xboard.c index 532df06..40e41c8 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -180,11 +180,13 @@ extern char *getenv(); # define ICS_LOGON "Library/Preferences/XboardICS.conf" # define DATADIR dataDir # define SETTINGS_FILE masterSettings +# define SYNC_MENUBAR gtkosx_application_sync_menubar(theApp) char dataDir[MSG_SIZ]; // for expanding ~~ char masterSettings[MSG_SIZ]; #else # define SLASH '/' # define IMG ".svg" +# define SYNC_MENUBAR #endif #ifdef __EMX__ @@ -445,7 +447,7 @@ CreateFonts () void ParseColor (int n, char *name) { // in XBoard, just copy the color-name string - if(colorVariable[n]) *(char**)colorVariable[n] = strdup(name); + if(colorVariable[n] && *name == '#') *(char**)colorVariable[n] = strdup(name); } char * @@ -1180,7 +1182,7 @@ main (int argc, char **argv) marginH = h - a.height - hc; // subtract current clock height, so it can be added back dynamically } - CreateAnyPieces(); + CreateAnyPieces(1); CreateGrid(); if(appData.logoSize) @@ -1466,11 +1468,23 @@ FindFont (char *pattern, int targetPxlSize) #endif void +MarkMenuItem (char *menuRef, int state) +{ + MenuItem *item = MenuNameToItem(menuRef); + + if(item && item->handle) { + ((GtkCheckMenuItem *) (item->handle))->active = state; + } + SYNC_MENUBAR; +} + +void EnableNamedMenuItem (char *menuRef, int state) { MenuItem *item = MenuNameToItem(menuRef); if(item && item->handle) gtk_widget_set_sensitive(item->handle, state); + SYNC_MENUBAR; } void @@ -2214,13 +2228,20 @@ static void LoadLogo (ChessProgramState *cps, int n, Boolean ics) { char buf[MSG_SIZ], *logoName = buf; + FILE *f; if(appData.logo[n][0]) { logoName = appData.logo[n]; } else if(appData.autoLogo) { if(ics) { // [HGM] logo: in ICS mode second can be used for ICS sprintf(buf, "%s/%s.png", appData.logoDir, appData.icsHost); - } else if(appData.directory[n] && appData.directory[n][0]) { - sprintf(buf, "%s/%s.png", appData.logoDir, cps->tidy); + } else { // engine; look in engine-dir (if any) first + snprintf(buf, MSG_SIZ, "%s/logo.png", appData.directory[n]); + if(appData.directory[n] && appData.directory[n][0] + && strcmp(appData.directory[n], ".") && (f = fopen(buf, "r")) ) + fclose(f); + else // no engine dir or no logo.png in it: look in logo dir + if(appData.logoDir && appData.logoDir[0]) + sprintf(buf, "%s/%s.png", appData.logoDir, cps->tidy); } } if(logoName[0])