[gnome-disk-utility] Fix default folder for disk images



commit a4d5bdcb1ddbbd5650e6f8d99fc71e244f477a5d
Author: David Zeuthen <zeuthen gmail com>
Date:   Tue Aug 13 20:06:25 2013 -0700

    Fix default folder for disk images
    
    Signed-off-by: David Zeuthen <zeuthen gmail com>

 src/disks/gducreatediskimagedialog.c  |    2 +-
 src/disks/gdurestorediskimagedialog.c |    5 ++++-
 src/disks/gduwindow.c                 |   12 ++++++------
 src/libgdu/gduutils.c                 |   26 +++++++++-----------------
 src/libgdu/gduutils.h                 |    2 +-
 5 files changed, 21 insertions(+), 26 deletions(-)
---
diff --git a/src/disks/gducreatediskimagedialog.c b/src/disks/gducreatediskimagedialog.c
index dd7958b..b7cf350 100644
--- a/src/disks/gducreatediskimagedialog.c
+++ b/src/disks/gducreatediskimagedialog.c
@@ -992,7 +992,7 @@ start_copying (DialogData *data)
     }
 
   /* now that we know the user picked a folder, update file chooser settings */
-  gdu_utils_file_chooser_for_disk_images_update_settings (GTK_FILE_CHOOSER (data->folder_fcbutton));
+  gdu_utils_file_chooser_for_disk_images_set_default_folder (folder);
 
   data->inhibit_cookie = gtk_application_inhibit (GTK_APPLICATION (gdu_window_get_application 
(data->window)),
                                                   GTK_WINDOW (data->dialog),
diff --git a/src/disks/gdurestorediskimagedialog.c b/src/disks/gdurestorediskimagedialog.c
index 813a84f..7ddf2f7 100644
--- a/src/disks/gdurestorediskimagedialog.c
+++ b/src/disks/gdurestorediskimagedialog.c
@@ -1030,6 +1030,7 @@ on_dialog_response (GtkDialog     *dialog,
 {
   DialogData *data = user_data;
   GList *objects = NULL;
+  GFile *folder = NULL;
 
   if (data->dialog == NULL)
     goto out;
@@ -1051,7 +1052,8 @@ on_dialog_response (GtkDialog     *dialog,
         }
 
       /* now that we know the user picked a folder, update file chooser settings */
-      gdu_utils_file_chooser_for_disk_images_update_settings (GTK_FILE_CHOOSER 
(data->selectable_image_fcbutton));
+      folder = gtk_file_chooser_get_current_folder_file (GTK_FILE_CHOOSER (data->selectable_image_fcbutton));
+      gdu_utils_file_chooser_for_disk_images_set_default_folder (folder);
 
       /* ensure the device is unused (e.g. unmounted) before copying data to it... */
       gdu_window_ensure_unused (data->window,
@@ -1068,6 +1070,7 @@ on_dialog_response (GtkDialog     *dialog,
     }
  out:
   g_list_free (objects);
+  g_clear_object (&folder);
 }
 
 void
diff --git a/src/disks/gduwindow.c b/src/disks/gduwindow.c
index a7fc766..5d30bb4 100644
--- a/src/disks/gduwindow.c
+++ b/src/disks/gduwindow.c
@@ -858,15 +858,13 @@ void
 gdu_window_show_attach_disk_image (GduWindow *window)
 {
   GtkWidget *dialog;
-  gchar *filename;
-  gint fd;
+  GFile *folder = NULL;
+  gchar *filename = NULL;
+  gint fd = -1;
   GUnixFDList *fd_list;
   GVariantBuilder options_builder;
   GtkWidget *ro_checkbutton;
 
-  filename = NULL;
-  fd = -1;
-
   dialog = gtk_file_chooser_dialog_new (_("Select Disk Image to Attach"),
                                         GTK_WINDOW (window),
                                         GTK_FILE_CHOOSER_ACTION_OPEN,
@@ -907,7 +905,8 @@ gdu_window_show_attach_disk_image (GduWindow *window)
     }
 
   /* now that we know the user picked a folder, update file chooser settings */
-  gdu_utils_file_chooser_for_disk_images_update_settings (GTK_FILE_CHOOSER (dialog));
+  folder = gtk_file_chooser_get_current_folder_file (GTK_FILE_CHOOSER (dialog));
+  gdu_utils_file_chooser_for_disk_images_set_default_folder (folder);
 
   g_variant_builder_init (&options_builder, G_VARIANT_TYPE_VARDICT);
   if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ro_checkbutton)))
@@ -925,6 +924,7 @@ gdu_window_show_attach_disk_image (GduWindow *window)
  out:
   gtk_widget_destroy (dialog);
   g_free (filename);
+  g_clear_object (&folder);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/libgdu/gduutils.c b/src/libgdu/gduutils.c
index d6d046f..f18515a 100644
--- a/src/libgdu/gduutils.c
+++ b/src/libgdu/gduutils.c
@@ -115,24 +115,16 @@ gdu_utils_configure_file_chooser_for_disk_images (GtkFileChooser *file_chooser,
 
 /* should be called when user chooses file/dir from @file_chooser */
 void
-gdu_utils_file_chooser_for_disk_images_update_settings (GtkFileChooser *file_chooser)
+gdu_utils_file_chooser_for_disk_images_set_default_folder (GFile *folder)
 {
-  const gchar *orig_folder;
-  gchar *cur_folder;
-
-  orig_folder = g_object_get_data (G_OBJECT (file_chooser), "x-gdu-orig-folder");
-  cur_folder = gtk_file_chooser_get_current_folder_uri (file_chooser);
-  /* NOTE: cur_folder may be NULL if e.g. something in "Search" or
-   * "Recently Used" is selected... in that case, do not update
-   * the GSetting
-   */
-  if (cur_folder != NULL && g_strcmp0 (orig_folder, cur_folder) != 0)
-    {
-      GSettings *settings = g_settings_new ("org.gnome.Disks");
-      g_settings_set_string (settings, "image-dir-uri", cur_folder);
-      g_clear_object (&settings);
-    }
-  g_free (cur_folder);
+  gchar *folder_uri;
+  GSettings *settings;
+
+  folder_uri = g_file_get_uri (folder);
+  settings = g_settings_new ("org.gnome.Disks");
+  g_settings_set_string (settings, "image-dir-uri", folder_uri);
+  g_clear_object (&settings);
+  g_free (folder_uri);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/libgdu/gduutils.h b/src/libgdu/gduutils.h
index c5dcacd..734b61e 100644
--- a/src/libgdu/gduutils.h
+++ b/src/libgdu/gduutils.h
@@ -22,7 +22,7 @@ void gdu_utils_configure_file_chooser_for_disk_images (GtkFileChooser *file_choo
                                                        gboolean        set_file_types,
                                                        gboolean        allow_compressed);
 
-void gdu_utils_file_chooser_for_disk_images_update_settings (GtkFileChooser *file_chooser);
+void gdu_utils_file_chooser_for_disk_images_set_default_folder (GFile *folder);
 
 GtkWidget *gdu_utils_create_info_bar (GtkMessageType  message_type,
                                       const gchar    *markup,


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