--- gtk+-2.8.6/gtk/gtkfilesel.c.orig 2005-12-07 21:13:33 +0100 +++ gtk+-2.8.6/gtk/gtkfilesel.c 2005-12-07 21:14:56 +0100 @@ -2461,6 +2461,33 @@ if (fs->last_selected != NULL) g_free (fs->last_selected); + // Single-click directory entry + if (new_names->len == 1) + { + GtkTreeView *tree_view; + GtkTreeModel *model; + GtkTreePath *path; + GtkTreeIter iter; + gboolean is_file; + + tree_view = gtk_tree_selection_get_tree_view (selection); + + if (gtk_tree_selection_get_selected (selection, &model, &iter)) + { + path = gtk_tree_model_get_path (model, &iter); + gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); + + if (!is_file) + { + gtk_file_selection_dir_activate (tree_view, path, + gtk_tree_view_get_column (tree_view, DIR_COLUMN), + user_data); + } + + gtk_tree_path_free (path); + } + } + fs->last_selected = g_strdup (g_ptr_array_index (new_names, index)); filename = get_real_filename (fs->last_selected, FALSE);