X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xaw%2Fxboard.c;h=a557b417c6212c6d00ba898579d3fdc012a27f55;hb=734ccf35681fc778bd4cee4cd94df4e909b5a497;hp=03ebb007efaeec54ca989ca9267a4f6635d291fb;hpb=ead2d5b5a7747a578e20f88442473b43a66ccc86;p=xboard.git diff --git a/xaw/xboard.c b/xaw/xboard.c index 03ebb00..a557b41 100644 --- a/xaw/xboard.c +++ b/xaw/xboard.c @@ -204,6 +204,7 @@ extern char *getenv(); #include "draw.h" #define SLASH '/' +#define DATADIR "~~" #ifdef __EMX__ #ifndef HAVE_USLEEP @@ -535,7 +536,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 * @@ -846,16 +847,16 @@ GenerateGlobalTranslationTable (void) /* go through all menu items and extract the keyboard shortcuts, so that X11 can load them */ char *output[2]; - int i,j; + int i,j,n=0; MenuItem *mi; output[0] = strdup(""); // build keystrokes with and wo mod keys separately output[1] = strdup(""); // so the more specific can preceed the other /* loop over all menu entries */ - for( i=0; menuBar[i].mi ; i++) + for( i=0; menuBar[i-n].mi || !n++; i++) { - mi = menuBar[i].mi; + mi = menuBar[i+n].mi; // kludge to access 'noMenu' behind sentinel for(j=0; mi[j].proc; j++) { if (mi[j].accel) @@ -920,13 +921,12 @@ GenerateGlobalTranslationTable (void) mods[strlen(mods)-1]='\0'; /* get the name for the callback, we can use MenuItem() here that will call KeyBindingProc */ - size_t namesize = snprintf(NULL, 0, "%s.%s", menuBar[i].ref, mi[j].ref); - char *name = malloc(namesize+1); - snprintf(name, namesize+1, "%s.%s", menuBar[i].ref, mi[j].ref); + char *name = malloc(MSG_SIZ); + if(n) snprintf(name, MSG_SIZ, "%s", mi[j].ref); + else snprintf(name, MSG_SIZ, "%s.%s", menuBar[i].ref, mi[j].ref); - size_t buffersize = snprintf(NULL, 0, ":%s%s: MenuItem(%s) \n ", mods, key, name); - char *buffer = malloc(buffersize+1); - snprintf(buffer, buffersize+1, ":%s%s: MenuItem(%s) \n ", mods, key, name); + char *buffer = malloc(MSG_SIZ); + snprintf(buffer, MSG_SIZ, ":%s%s: MenuItem(%s) \n ", mods, key, name); /* add string to the output */ output[shift|alt|ctrl] = realloc(output[shift|alt|ctrl], strlen(output[shift|alt|ctrl]) + strlen(buffer)+1); @@ -991,6 +991,9 @@ main (int argc, char **argv) char *p; int forceMono = False; + extern Option chatOptions[]; // FIXME: adapt Chat window, removing ICS pane and Hide button + chatOptions[6].type = chatOptions[10].type = Skip; + srandom(time(0)); // [HGM] book: make random truly random setbuf(stdout, NULL); @@ -1285,7 +1288,7 @@ main (int argc, char **argv) CatchDeleteWindow(shellWidget, "QuitProc"); - CreateAnyPieces(); + CreateAnyPieces(1); CreateGrid(); if(appData.logoSize) @@ -2499,7 +2502,7 @@ LoadLogo (ChessProgramState *cps, int n, Boolean ics) } 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]) { + } else if(appData.logoDir && appData.logoDir[0]) { sprintf(buf, "%s/%s.png", appData.logoDir, cps->tidy); } }