[gedit/zbrown/deteplification-src: 390/633] Window: change set_default_location() to take a GFile folder




commit 25cc8ed6e7eae5acc35191b9dd32810460292cc6
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 09cfff924..16307bce1 100644
--- a/gedit/gedit-commands-file.c
+++ b/gedit/gedit-commands-file.c
@@ -366,6 +366,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);
@@ -378,6 +380,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)
@@ -389,10 +392,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);
 
@@ -706,7 +712,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 f0fcf255f..c08c0afcb 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -3444,20 +3444,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]