From 91b80433977f1df99f6922102792feb494db7145 Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Wed, 29 Jun 2011 17:58:10 -0500 Subject: [PATCH] Set the filename entry's base folder when a recent-folder is selected This lets the filename entry do completion relative to the selected recent-folder. Signed-off-by: Federico Mena Quintero --- gtk/gtkfilechooserdefault.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 6f16365b0b..1fa1d033c1 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -6559,7 +6559,6 @@ update_chooser_entry (GtkFileChooserDefault *impl) /* no need to update the file chooser's entry if there's no entry */ if (impl->operation_mode == OPERATION_MODE_SEARCH || - impl->operation_mode == OPERATION_MODE_RECENT || !impl->location_entry) return; @@ -6578,7 +6577,10 @@ update_chooser_entry (GtkFileChooserDefault *impl) if (closure.num_selected == 0) { - goto maybe_clear_entry; + if (impl->operation_mode == OPERATION_MODE_RECENT) + _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), NULL); + else + goto maybe_clear_entry; } else if (closure.num_selected == 1) { @@ -6619,6 +6621,20 @@ update_chooser_entry (GtkFileChooserDefault *impl) return; } + else if (impl->operation_mode == OPERATION_MODE_RECENT + && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE) + { + GFile *folder; + + /* Set the base folder on the name entry, so it will do completion relative to the correct recent-folder */ + + gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), &closure.first_selected_iter, + MODEL_COL_FILE, &folder, + -1); + _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), folder); + g_object_unref (folder); + return; + } } else {