diff --git a/ChangeLog b/ChangeLog index 93c211fde9..423893f95e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ * gtk/gtkfilechooserdefault.c (selection_check_foreach_cb): Don't use bitops on booleans. + (gtk_file_chooser_default_should_respond): Make it easier to + select folders in SELECT_FOLDER mode. Wed Sep 22 00:54:34 2004 Matthias Clasen diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 93c211fde9..423893f95e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -2,6 +2,8 @@ * gtk/gtkfilechooserdefault.c (selection_check_foreach_cb): Don't use bitops on booleans. + (gtk_file_chooser_default_should_respond): Make it easier to + select folders in SELECT_FOLDER mode. Wed Sep 22 00:54:34 2004 Matthias Clasen diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 93c211fde9..423893f95e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -2,6 +2,8 @@ * gtk/gtkfilechooserdefault.c (selection_check_foreach_cb): Don't use bitops on booleans. + (gtk_file_chooser_default_should_respond): Make it easier to + select folders in SELECT_FOLDER mode. Wed Sep 22 00:54:34 2004 Matthias Clasen diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 93c211fde9..423893f95e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -2,6 +2,8 @@ * gtk/gtkfilechooserdefault.c (selection_check_foreach_cb): Don't use bitops on booleans. + (gtk_file_chooser_default_should_respond): Make it easier to + select folders in SELECT_FOLDER mode. Wed Sep 22 00:54:34 2004 Matthias Clasen diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 58ebb07e0f..6f8b905a0f 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -4932,9 +4932,7 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed) current_focus = gtk_window_get_focus (GTK_WINDOW (toplevel)); - if (current_focus == NULL) - return FALSE; - else if (current_focus == impl->browse_files_tree_view) + if (current_focus == impl->browse_files_tree_view) { int num_selected; gboolean all_files, all_folders; @@ -4943,9 +4941,17 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed) selection_check (impl, &num_selected, &all_files, &all_folders); - if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER && num_selected != 1) - return TRUE; /* zero means current folder; more than one means use the whole selection */ - + if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) + { + if (num_selected != 1) + return TRUE; /* zero means current folder; more than one means use the whole selection */ + else if (current_focus != impl->browse_files_tree_view) + { + /* a single folder is selected and a button was clicked */ + switch_to_selected_folder (impl); + return TRUE; + } + } if (num_selected == 0) { if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE