[gedit] Window: change set_default_location() to take a GFile folder



commit f2b29ae8a83926e6f8b1c996a5e11c77eedfd1fd
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Jun 7 01:53:27 2020 +0200

    Window: change set_default_location() to take a GFile folder
    
    Use _gedit_file_chooser_open_get_current_folder_uri() instead of the
    first GFile to open. With the new GeditFileChooserOpen implementation,
    it calls gtk_file_chooser_get_current_folder_uri() (which is more
    logical in order to remember the folder).
    gtk_file_chooser_get_current_folder_uri() returns NULL when opening
    file(s) from the Recent list.
    
    So this commit changes the behavior, it will now remember that files
    were opened from the Recent list, to show again the Recent list the next
    time (but this requires still a few commits to get things right in that
    area).

 gedit/gedit-commands-file.c | 21 ++++++++++++++++++---
 gedit/gedit-window.c        | 13 +++++--------
 gedit/gedit-window.h        |  2 +-
 3 files changed, 24 insertions(+), 12 deletions(-)
---
diff --git a/gedit/gedit-commands-file.c b/gedit/gedit-commands-file.c
index ed9852e0a..beb5dc8e6 100644
--- a/gedit/gedit-commands-file.c
+++ b/gedit/gedit-commands-file.c
@@ -369,6 +369,8 @@ file_chooser_open_done_cb (GeditFileChooserOpen *file_chooser,
 {
        GSList *files;
        const GtkSourceEncoding *encoding;
+       gchar *folder_uri;
+       GFile *folder = NULL;
        GSList *loaded_documents;
 
        gedit_debug (DEBUG_COMMANDS);
@@ -381,6 +383,7 @@ file_chooser_open_done_cb (GeditFileChooserOpen *file_chooser,
 
        files = _gedit_file_chooser_open_get_files (file_chooser);
        encoding = _gedit_file_chooser_open_get_encoding (file_chooser);
+       folder_uri = _gedit_file_chooser_open_get_current_folder_uri (file_chooser);
        g_object_unref (file_chooser);
 
        if (window == NULL)
@@ -392,10 +395,13 @@ file_chooser_open_done_cb (GeditFileChooserOpen *file_chooser,
        }
 
        /* Remember the folder we navigated to. */
-       if (files != NULL)
+       if (folder_uri != NULL)
        {
-               _gedit_window_set_default_location (window, files->data);
+               folder = g_file_new_for_uri (folder_uri);
+               g_free (folder_uri);
        }
+       _gedit_window_set_default_location (window, folder);
+       g_clear_object (&folder);
 
        loaded_documents = gedit_commands_load_locations (window, files, encoding, 0, 0);
 
@@ -709,7 +715,16 @@ save_dialog_response_cb (GeditFileChooserDialog *dialog,
        g_free (parse_name);
 
        /* Let's remember the dir we navigated to, even if the saving fails... */
-       _gedit_window_set_default_location (window, location);
+       {
+               GFile *folder;
+
+               folder = g_file_get_parent (location);
+               if (folder != NULL)
+               {
+                       _gedit_window_set_default_location (window, folder);
+                       g_object_unref (folder);
+               }
+       }
 
        _gedit_tab_save_as_async (tab,
                                  location,
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index ac502fd0c..5b30107fe 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -3395,20 +3395,17 @@ _gedit_window_get_default_location (GeditWindow *window)
 
 void
 _gedit_window_set_default_location (GeditWindow *window,
-                                   GFile       *location)
+                                   GFile       *folder)
 {
-       GFile *folder;
-
        g_return_if_fail (GEDIT_IS_WINDOW (window));
-       g_return_if_fail (G_IS_FILE (location));
+       g_return_if_fail (folder == NULL || G_IS_FILE (folder));
+
+       g_free (window->priv->file_chooser_folder_uri);
+       window->priv->file_chooser_folder_uri = NULL;
 
-       folder = g_file_get_parent (location);
        if (folder != NULL)
        {
-               g_free (window->priv->file_chooser_folder_uri);
                window->priv->file_chooser_folder_uri = g_file_get_uri (folder);
-
-               g_object_unref (folder);
        }
 }
 
diff --git a/gedit/gedit-window.h b/gedit/gedit-window.h
index f02a044ae..b2eb53535 100644
--- a/gedit/gedit-window.h
+++ b/gedit/gedit-window.h
@@ -155,7 +155,7 @@ gboolean     _gedit_window_is_removing_tabs         (GeditWindow         *window);
 GFile          *_gedit_window_get_default_location     (GeditWindow         *window);
 
 void            _gedit_window_set_default_location     (GeditWindow         *window,
-                                                        GFile               *location);
+                                                        GFile               *folder);
 
 void            _gedit_window_fullscreen               (GeditWindow         *window);
 


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