[gedit] Window: better remember FileChooser's folders



commit 4491a5a395d08391b8523b2d826075226e1dec6c
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 747f29d9e..a5ab1ce37 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -3388,6 +3388,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;
 }
 
@@ -3400,6 +3415,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]