diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-09-05 02:30:36 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2011-10-06 20:16:21 +0800 |
commit | 938505da180727fbc56b68b80851adc3cf676523 (patch) | |
tree | ad0a04a23ca77922eebea9a644d12c47f922a2aa /shell/e-shell-utils.c | |
parent | ef05d73b0a06cfc5eaf1a74c7b5c25134d81e328 (diff) | |
download | gsoc2013-evolution-938505da180727fbc56b68b80851adc3cf676523.tar.gz gsoc2013-evolution-938505da180727fbc56b68b80851adc3cf676523.tar.zst gsoc2013-evolution-938505da180727fbc56b68b80851adc3cf676523.zip |
Let GtkFileChooser track its own last-used-folder.
GtkFileChooser in GTK+ 3.2 now keeps track of the last-used-folder
itself, even across applications, so get out of its way and let it
handle it.
Diffstat (limited to 'shell/e-shell-utils.c')
-rw-r--r-- | shell/e-shell-utils.c | 70 |
1 files changed, 14 insertions, 56 deletions
diff --git a/shell/e-shell-utils.c b/shell/e-shell-utils.c index 05722a0319..b5a1f490ae 100644 --- a/shell/e-shell-utils.c +++ b/shell/e-shell-utils.c @@ -65,11 +65,10 @@ e_shell_configure_ui_manager (EShell *shell, * @customize_data: optional data to pass to @customize_func * * Runs a #GtkFileChooserDialog in open mode with the given title and - * returns the selected #GFile. It automatically remembers the selected - * folder. If @customize_func is provided, the function is called just - * prior to running the dialog (the file chooser is the first argument, - * @customize data is the second). If the user cancels the dialog the - * function will return %NULL. + * returns the selected #GFile. If @customize_func is provided, the + * function is called just prior to running the dialog (the file chooser + * is the first argument, @customize data is the second). If the user + * cancels the dialog the function will return %NULL. * * Returns: the #GFile to open, or %NULL **/ @@ -79,19 +78,13 @@ e_shell_run_open_dialog (EShell *shell, GtkCallback customize_func, gpointer customize_data) { - EShellSettings *shell_settings; GtkFileChooser *file_chooser; GFile *chosen_file = NULL; GtkWidget *dialog; GtkWindow *parent; - const gchar *property_name; - gchar *uri; g_return_val_if_fail (E_IS_SHELL (shell), NULL); - property_name = "file-chooser-folder"; - shell_settings = e_shell_get_shell_settings (shell); - parent = e_shell_get_active_window (shell); dialog = gtk_file_chooser_dialog_new ( @@ -107,27 +100,13 @@ e_shell_run_open_dialog (EShell *shell, gtk_file_chooser_set_local_only (file_chooser, FALSE); - /* Restore the current folder from the previous file chooser. */ - uri = e_shell_settings_get_string (shell_settings, property_name); - if (uri != NULL) - gtk_file_chooser_set_current_folder_uri (file_chooser, uri); - g_free (uri); - /* Allow further customizations before running the dialog. */ if (customize_func != NULL) customize_func (dialog, customize_data); - if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT) - goto exit; - - chosen_file = gtk_file_chooser_get_file (file_chooser); - - /* Save the current folder for subsequent file choosers. */ - uri = gtk_file_chooser_get_current_folder_uri (file_chooser); - e_shell_settings_set_string (shell_settings, property_name, uri); - g_free (uri); + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + chosen_file = gtk_file_chooser_get_file (file_chooser); -exit: gtk_widget_destroy (dialog); return chosen_file; @@ -143,16 +122,15 @@ exit: * @customize_data: optional data to pass to @customize_func * * Runs a #GtkFileChooserDialog in save mode with the given title and - * returns the selected #GFile. It automatically remembers the selected - * folder. If @customize_func is provided, the function is called just - * prior to running the dialog (the file chooser is the first argument, - * @customize_data is the second). If the user cancels the dialog the - * function will return %NULL. + * returns the selected #GFile. If @customize_func is provided, the + * function is called just prior to running the dialog (the file chooser + * is the first argument, @customize_data is the second). If the user + * cancels the dialog the function will return %NULL. * * With non-%NULL @filters will be added also file filters to the dialog. * The string format is "pat1:mt1;pat2:mt2:...", where 'pat' is a pattern - * and 'mt' is a MIME type for the pattern to be used. - * There can be more than one MIME type, those are separated by comma. + * and 'mt' is a MIME type for the pattern to be used. There can be more + * than one MIME type, those are separated by comma. * * Returns: the #GFile to save to, or %NULL **/ @@ -164,19 +142,13 @@ e_shell_run_save_dialog (EShell *shell, GtkCallback customize_func, gpointer customize_data) { - EShellSettings *shell_settings; GtkFileChooser *file_chooser; GFile *chosen_file = NULL; GtkWidget *dialog; GtkWindow *parent; - const gchar *property_name; - gchar *uri; g_return_val_if_fail (E_IS_SHELL (shell), NULL); - property_name = "file-chooser-folder"; - shell_settings = e_shell_get_shell_settings (shell); - parent = e_shell_get_active_window (shell); dialog = gtk_file_chooser_dialog_new ( @@ -193,12 +165,6 @@ e_shell_run_save_dialog (EShell *shell, gtk_file_chooser_set_local_only (file_chooser, FALSE); gtk_file_chooser_set_do_overwrite_confirmation (file_chooser, TRUE); - /* Restore the current folder from the previous file chooser. */ - uri = e_shell_settings_get_string (shell_settings, property_name); - if (uri != NULL) - gtk_file_chooser_set_current_folder_uri (file_chooser, uri); - g_free (uri); - if (suggestion != NULL) gtk_file_chooser_set_current_name (file_chooser, suggestion); @@ -254,17 +220,9 @@ e_shell_run_save_dialog (EShell *shell, if (customize_func != NULL) customize_func (dialog, customize_data); - if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT) - goto exit; - - chosen_file = gtk_file_chooser_get_file (file_chooser); - - /* Save the current folder for subsequent file choosers. */ - uri = gtk_file_chooser_get_current_folder_uri (file_chooser); - e_shell_settings_set_string (shell_settings, property_name, uri); - g_free (uri); + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + chosen_file = gtk_file_chooser_get_file (file_chooser); -exit: gtk_widget_destroy (dialog); return chosen_file; |