[gnome-builder] projects-directory: save absolute path



commit 8f67e5fecf7ee031dfd8c7f46a4cd85f719ddf47
Author: Akshaya Kakkilaya <akshaya kakkilaya gmail com>
Date:   Thu Apr 7 03:58:43 2016 +0530

    projects-directory: save absolute path
    
    https://bugzilla.gnome.org/show_bug.cgi?id=764701

 .../ide-preferences-file-chooser-button.c          |   27 +++++++++----------
 plugins/create-project/gbp-create-project-widget.c |    6 +++-
 plugins/git/ide-git-clone-widget.c                 |    6 +++-
 3 files changed, 23 insertions(+), 16 deletions(-)
---
diff --git a/libide/preferences/ide-preferences-file-chooser-button.c 
b/libide/preferences/ide-preferences-file-chooser-button.c
index 277bb4a..fa17860 100644
--- a/libide/preferences/ide-preferences-file-chooser-button.c
+++ b/libide/preferences/ide-preferences-file-chooser-button.c
@@ -45,19 +45,14 @@ enum {
 static GParamSpec *properties [LAST_PROP];
 
 static void
-ide_preferences_file_chooser_button_save_folder (IdePreferencesFileChooserButton *self,
-                                                 GtkFileChooserButton            *widget)
+ide_preferences_file_chooser_button_save_file (IdePreferencesFileChooserButton *self,
+                                               GtkFileChooserButton            *widget)
 {
-  g_autoptr(GFile) home = NULL;
-  g_autoptr(GFile) folder = NULL;
   g_autofree gchar *path = NULL;
 
   g_assert (IDE_IS_PREFERENCES_FILE_CHOOSER_BUTTON (self));
-  g_assert (GTK_IS_FILE_CHOOSER_BUTTON (widget));
 
-  home = g_file_new_for_path (g_get_home_dir ());
-  folder = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (widget));
-  path = g_file_get_relative_path (home, folder);
+  path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->widget));
 
   g_settings_set_string (self->settings, self->key, path);
 
@@ -68,7 +63,7 @@ ide_preferences_file_chooser_button_connect (IdePreferencesBin *bin,
                                              GSettings         *settings)
 {
   IdePreferencesFileChooserButton *self = (IdePreferencesFileChooserButton *)bin;
-  g_autofree gchar *folder = NULL;
+  g_autofree gchar *file = NULL;
   g_autofree gchar *path = NULL;
 
   g_assert (IDE_IS_PREFERENCES_FILE_CHOOSER_BUTTON (self));
@@ -76,17 +71,21 @@ ide_preferences_file_chooser_button_connect (IdePreferencesBin *bin,
 
   self->settings = g_object_ref (settings);
 
-  folder = g_settings_get_string (settings, self->key);
+  file = g_settings_get_string (settings, self->key);
 
-  if (!ide_str_empty0 (folder))
+  if (!ide_str_empty0 (file))
     {
-      path = g_build_filename (g_get_home_dir (), folder, NULL);
-      gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (self->widget), path);
+      if (!g_path_is_absolute (file))
+        path = g_build_filename (g_get_home_dir (), file, NULL);
+      else
+        path = g_steal_pointer (&file);
+
+      gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (self->widget), path);
     }
 
   g_signal_connect_object (self->widget,
                            "file-set",
-                           G_CALLBACK (ide_preferences_file_chooser_button_save_folder),
+                           G_CALLBACK (ide_preferences_file_chooser_button_save_file),
                            self,
                            G_CONNECT_SWAPPED);
 }
diff --git a/plugins/create-project/gbp-create-project-widget.c 
b/plugins/create-project/gbp-create-project-widget.c
index 91cbba2..eaffe96 100644
--- a/plugins/create-project/gbp-create-project-widget.c
+++ b/plugins/create-project/gbp-create-project-widget.c
@@ -340,7 +340,11 @@ gbp_create_project_widget_init (GbpCreateProjectWidget *self)
 
   if (!ide_str_empty0 (path))
     {
-      projects_dir = g_build_filename (g_get_home_dir (), path, NULL);
+      if (!g_path_is_absolute (path))
+        projects_dir = g_build_filename (g_get_home_dir (), path, NULL);
+      else
+        projects_dir = g_steal_pointer (&path);
+
       gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (self->project_location_button),
                                            projects_dir);
     }
diff --git a/plugins/git/ide-git-clone-widget.c b/plugins/git/ide-git-clone-widget.c
index 0c685bb..927c8de 100644
--- a/plugins/git/ide-git-clone-widget.c
+++ b/plugins/git/ide-git-clone-widget.c
@@ -205,7 +205,11 @@ ide_git_clone_widget_init (IdeGitCloneWidget *self)
 
   if (!ide_str_empty0 (path))
     {
-      projects_dir = g_build_filename (g_get_home_dir (), path, NULL);
+      if (!g_path_is_absolute (path))
+        projects_dir = g_build_filename (g_get_home_dir (), path, NULL);
+      else
+        projects_dir = g_steal_pointer (&path);
+
       gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (self->clone_location_button),
                                        projects_dir);
     }


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