[gedit/zbrown/deteplification-src: 396/633] Window: better remember FileChooser's folders




commit aa2e4537a2913b11e3ea8827ade27ee5a4aba2ff
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Jun 7 03:41:58 2020 +0200

    Window: better remember FileChooser's folders
    
    Especially if files are opened from the FileChooser's Recent list.

 gedit/gedit-window.c | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
---
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 414d6ae57..9c80b5da4 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -3437,6 +3437,21 @@ _gedit_window_get_file_chooser_folder_uri (GeditWindow          *window,
        g_return_val_if_fail ((action == GTK_FILE_CHOOSER_ACTION_OPEN) ||
                              (action == GTK_FILE_CHOOSER_ACTION_SAVE), NULL);
 
+       if (action == GTK_FILE_CHOOSER_ACTION_OPEN)
+       {
+               GeditSettings *settings;
+               GSettings *file_chooser_state_settings;
+
+               settings = _gedit_settings_get_singleton ();
+               file_chooser_state_settings = _gedit_settings_peek_file_chooser_state_settings (settings);
+
+               if (g_settings_get_boolean (file_chooser_state_settings,
+                                           GEDIT_SETTINGS_FILE_CHOOSER_OPEN_RECENT))
+               {
+                       return NULL;
+               }
+       }
+
        return window->priv->file_chooser_folder_uri;
 }
 
@@ -3449,6 +3464,28 @@ _gedit_window_set_file_chooser_folder_uri (GeditWindow          *window,
        g_return_if_fail ((action == GTK_FILE_CHOOSER_ACTION_OPEN) ||
                          (action == GTK_FILE_CHOOSER_ACTION_SAVE));
 
+       if (action == GTK_FILE_CHOOSER_ACTION_OPEN)
+       {
+               GeditSettings *settings;
+               GSettings *file_chooser_state_settings;
+               gboolean open_recent = folder_uri == NULL;
+
+               settings = _gedit_settings_get_singleton ();
+               file_chooser_state_settings = _gedit_settings_peek_file_chooser_state_settings (settings);
+
+               g_settings_set_boolean (file_chooser_state_settings,
+                                       GEDIT_SETTINGS_FILE_CHOOSER_OPEN_RECENT,
+                                       open_recent);
+
+               if (open_recent)
+               {
+                       /* Do not set window->priv->file_chooser_folder_uri to
+                        * NULL, to not lose the folder for the Save action.
+                        */
+                       return;
+               }
+       }
+
        g_free (window->priv->file_chooser_folder_uri);
        window->priv->file_chooser_folder_uri = g_strdup (folder_uri);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]