[gedit] Window: change default_location -> file_chooser_folder_uri attribute



commit d8eb78ee6cfe1222976d5cab33297d38957f86bc
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Jun 7 01:26:35 2020 +0200

    Window: change default_location -> file_chooser_folder_uri attribute
    
    The GTK 3 GtkFileChooser API recommends to use the current folder *uri*,
    not the GFile. So as a first step, store the file_chooser_folder_uri.
    The GeditWindow (private) API will be changed later accordingly.

 gedit/gedit-window-private.h |  2 +-
 gedit/gedit-window.c         | 25 +++++++++++++++----------
 2 files changed, 16 insertions(+), 11 deletions(-)
---
diff --git a/gedit/gedit-window-private.h b/gedit/gedit-window-private.h
index 5b30ac053..60f8ba706 100644
--- a/gedit/gedit-window-private.h
+++ b/gedit/gedit-window-private.h
@@ -100,7 +100,7 @@ struct _GeditWindowPrivate
 
        GtkWindowGroup *window_group;
 
-       GFile          *default_location;
+       gchar          *file_chooser_folder_uri;
 
        gchar          *direct_save_uri;
 
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 44da898fd..ac502fd0c 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -210,7 +210,6 @@ gedit_window_dispose (GObject *object)
 
        g_clear_object (&window->priv->message_bus);
        g_clear_object (&window->priv->window_group);
-       g_clear_object (&window->priv->default_location);
 
        /* We must free the settings after saving the panels */
        g_clear_object (&window->priv->editor_settings);
@@ -243,6 +242,7 @@ gedit_window_finalize (GObject *object)
 {
        GeditWindow *window = GEDIT_WINDOW (object);
 
+       g_free (window->priv->file_chooser_folder_uri);
        g_slist_free_full (window->priv->closed_docs_stack, (GDestroyNotify)g_object_unref);
 
        G_OBJECT_CLASS (gedit_window_parent_class)->finalize (object);
@@ -3385,26 +3385,31 @@ _gedit_window_get_default_location (GeditWindow *window)
 {
        g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
 
-       return window->priv->default_location != NULL ?
-               g_object_ref (window->priv->default_location) : NULL;
+       if (window->priv->file_chooser_folder_uri == NULL)
+       {
+               return NULL;
+       }
+
+       return g_file_new_for_uri (window->priv->file_chooser_folder_uri);
 }
 
 void
 _gedit_window_set_default_location (GeditWindow *window,
                                    GFile       *location)
 {
-       GFile *dir;
+       GFile *folder;
 
        g_return_if_fail (GEDIT_IS_WINDOW (window));
        g_return_if_fail (G_IS_FILE (location));
 
-       dir = g_file_get_parent (location);
-       g_return_if_fail (dir != NULL);
-
-       if (window->priv->default_location != NULL)
-               g_object_unref (window->priv->default_location);
+       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);
 
-       window->priv->default_location = dir;
+               g_object_unref (folder);
+       }
 }
 
 static void


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