X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxboard.c;h=5da2d3e66b5ffa4edcbb7fdb7284964d3129becd;hb=4011e8678d85310eedf19fd00aa5d96a9a60770a;hp=8958e3cc11aba22f232a2f54c0f02396d942434a;hpb=34ee88fbe6aaf114f5a0212c4c94c532d3ae1925;p=xboard.git diff --git a/gtk/xboard.c b/gtk/xboard.c index 8958e3c..5da2d3e 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -5,7 +5,7 @@ * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, - * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: @@ -168,7 +168,7 @@ extern char *getenv(); #include "draw.h" #ifdef OSXAPP -# include +# include // prevent pathname of positional file argument provided by OS X being be mistaken for option name // (price is that we won't recognize Windows option format anymore). # define SLASH '-' @@ -890,6 +890,7 @@ main (int argc, char **argv) snprintf(svgDir, MSG_SIZ, "%s/themes/default", dataDir); suppress = (argc == 1 || argc > 1 && argv[1][00] != '-'); // OSX sends signal even if name was already argv[1]! g_signal_connect(theApp, "NSApplicationOpenFile", G_CALLBACK(StartNewXBoard), NULL); + g_signal_connect(theApp, "NSApplicationWillTerminate", G_CALLBACK(ExitEvent), NULL); // we must call application ready before we can get the signal, // and supply a (dummy) menu bar before that, to avoid problems with dual apples in it gtkosx_application_set_menu_bar(theApp, GTK_MENU_SHELL(gtk_menu_bar_new())); @@ -1691,7 +1692,7 @@ ReSize (WindowPlacement *wp) h = BOARD_HEIGHT * (squareSize + lineGap) + lineGap; if(optList[W_BOARD].max > w) optList[W_BOARD].max = w; if(optList[W_BOARD].value > h) optList[W_BOARD].value = h; - first = 0; + first = appData.fixedSize; } static guint delayedDragTag = 0; @@ -1929,7 +1930,7 @@ void MoveTypeInProc(eventkey) buf[0]=eventkey->keyval; buf[1]='\0'; - if (eventkey->keyval > 32 && eventkey->keyval < 256) + if (eventkey->keyval > 32 && eventkey->keyval < 256 || *buf == 27) ConsoleAutoPopUp (buf); } @@ -1965,7 +1966,7 @@ ManProc () { // called from menu #ifdef OSXAPP char buf[MSG_SIZ]; - snprintf(buf, MSG_SIZ, "%s ./man.command", appData.sysOpen); + snprintf(buf, MSG_SIZ, "osascript -e 'tell application \"Terminal\"' -e 'activate' -e 'do script \"man %s/../man/man6/xboard.6\"' -e 'end tell'", dataDir); system(buf); #else system("xterm -e man xboard &"); @@ -1973,6 +1974,20 @@ ManProc () } void +InfoProc () +{ + char buf[MSG_SIZ]; +#ifdef OSXAPP + snprintf(buf, MSG_SIZ, "osascript -e 'tell application \"Terminal\"' -e 'activate' -e 'do script \"info -d %s/../info -f xboard.info\"' -e 'end tell'", dataDir); +#else + snprintf(buf, sizeof(buf), "xterm -e info --directory %s --directory . -f %s &", + INFODIR, INFOFILE); +#endif + system(buf); +} + + +void SetWindowTitle (char *text, char *title, char *icon) { #ifdef TODO_GTK @@ -2316,6 +2331,15 @@ void FileNamePopUpWrapper(label, def, filter, proc, pathFlag, openMode, name, fp char fileext[10] = ""; char *result = NULL; char *cp; + char curDir[MSG_SIZ]; + + StartDir(filter, NULL); // change to start directory for this file type + + if(def && *def && def[strlen(def)-1] == '/') { + getcwd(curDir, MSG_SIZ); + chdir(def); + } + /* make a copy of the filter string, so that strtok can work with it*/ cp = strdup(filter); @@ -2389,12 +2413,16 @@ void FileNamePopUpWrapper(label, def, filter, proc, pathFlag, openMode, name, fp ASSIGN(*name, filename); ScheduleDelayedEvent(DelayedLoad, 50); } + StartDir(filter, filename); g_free (filename); - }; + } + else StartDir(filter, ""); gtk_widget_destroy (dialog); ModeHighlight(); + if(def && *def && def[strlen(def)-1] == '/') chdir(curDir); + free(cp); return;