Also supply shortcut for start directory in GTK file chooser
authorH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 22 Apr 2016 09:37:58 +0000 (11:37 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 22 Apr 2016 09:37:58 +0000 (11:37 +0200)
The first shortcut entry in the Places list is now created for the
directory in which XBoard started (which is $CHESSDIR if that was set).
This is suppressed if it would be a user home directory, as this would
already be in the list by default.

gtk/xboard.c
gtk/xboard.h
gtk/xoptions.c

index 423f304..4a2731a 100644 (file)
@@ -984,7 +984,9 @@ main (int argc, char **argv)
     }
 
     if ((chessDir = (char *) getenv("CHESSDIR")) == NULL) {
-       chessDir = ".";
+       static char dirName[MSG_SIZ];
+       getcwd(dirName, MSG_SIZ);
+       chessDir = dirName;
     } else {
        if (chdir(chessDir) != 0) {
            fprintf(stderr, _("%s: can't cd to CHESSDIR: "), programName);
index 3318cb7..8878d2a 100644 (file)
@@ -165,6 +165,7 @@ extern char *layoutName;
 extern int useImages, useImageSqs;
 extern char ICSInputTranslations[];
 extern char *selected_fen_position;
+extern char *chessDir;
 
 
 #define TOPLEVEL 1 /* preference item; 1 = make popup windows toplevel */
index 18024e8..fbe1c23 100644 (file)
@@ -1126,7 +1126,7 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata)
     GtkFileFilter *gtkfilter_all;
     int n, opt_i = (intptr_t) gdata;
     GtkFileChooserAction fc_action;
-    char buf[MSG_SIZ];
+    char buf[MSG_SIZ], *p;
 
     gtkfilter     = gtk_file_filter_new();
     gtkfilter_all = gtk_file_filter_new();
@@ -1150,6 +1150,8 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata)
                       GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
                       NULL);
 
+    if(*chessDir && (!(p = strstr(chessDir, "/home/")) || strchr(p+6, '/')))
+    gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(dialog), chessDir, NULL);
     gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(dialog), dataDir, NULL);
     snprintf(buf, MSG_SIZ, "%s/themes", dataDir);
     gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(dialog), buf, NULL);