Provide help clicks on recently-used-engines menu items
[xboard.git] / gtk / xoptions.c
index 7a3a831..3cf123e 100644 (file)
@@ -503,7 +503,7 @@ CreateMenuPopup (Option *opt, int n, int def)
          } else
            entry = gtk_menu_item_new_with_label(msg);
          gtk_signal_connect_object (GTK_OBJECT (entry), "activate", GTK_SIGNAL_FUNC(MenuSelect), (gpointer) (intptr_t) ((n<<16)+i));
-         g_signal_connect(entry, "button-release-event", G_CALLBACK (HelpEvent), (gpointer) mb[i].string );
+         g_signal_connect(entry, "button-release-event", G_CALLBACK (HelpEvent), (gpointer) (mb[i].proc ? mb[i].string : "Recently Used Engines"));
          if(mb[i].accel) {
            guint accelerator_key;
            GdkModifierType accelerator_mods;
@@ -1109,15 +1109,16 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata)
     GtkFileFilter *gtkfilter_all;
     int opt_i = (intptr_t) gdata;
     GtkFileChooserAction fc_action;
+    char buf[MSG_SIZ];
 
     gtkfilter     = gtk_file_filter_new();
     gtkfilter_all = gtk_file_filter_new();
 
-    char fileext[MSG_SIZ], *filter = currentOption[opt_i].textValue, *old;
+    char fileext[MSG_SIZ], *filter = currentOption[opt_i].textValue, *old = NULL;
 
+    if(currentCps) filter = NULL; else if(currentOption[opt_i].type == PathName && filter) filter = "dir";
     GetWidgetText(&currentOption[opt_i], &old); // start in same directory as current widget contents
     StartDir(filter, old); // change to start directory for this file type
-    g_free(old);
 
     /* select file or folder depending on option_type */
     if (currentOption[opt_i].type == PathName)
@@ -1132,13 +1133,19 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata)
                       GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
                       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);
+    snprintf(buf, MSG_SIZ, "%s/themes/textures", dataDir);
+    gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(dialog), buf, NULL);
+
     /* one filter to show everything */
     gtk_file_filter_add_pattern(gtkfilter_all, "*");
     gtk_file_filter_set_name   (gtkfilter_all, "All Files");
     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),gtkfilter_all);
 
     /* filter for specific filetypes e.g. pgn or fen */
-    if (currentOption[opt_i].textValue != NULL)
+    if (currentOption[opt_i].textValue != NULL && !currentCps) // no filters for engine options!
       {
         char *q, *p = currentOption[opt_i].textValue;
         gtk_file_filter_set_name (gtkfilter, p);