Updating branch refs/heads/master
         to 7904194c58633270be180e54f660dc62aea778a1 (commit)
       from 0ec84f42a1dc3184cab04348b9b0147d95bc4203 (commit)

commit 7904194c58633270be180e54f660dc62aea778a1
Author: Enrico Tröger <enr...@xfce.org>
Date:   Sun Jan 17 23:58:16 2010 +0100

    Expand tilde in folder names if a username is set for the bookmark

 src/bookmark.c           |   19 +++++++++++++++++++
 src/bookmark.h           |    1 +
 src/bookmarkeditdialog.c |    2 --
 src/window.c             |   12 ++++++++++--
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/bookmark.c b/src/bookmark.c
index 12c701f..9df9282 100644
--- a/src/bookmark.c
+++ b/src/bookmark.c
@@ -430,6 +430,25 @@ const gchar *gigolo_bookmark_get_folder(GigoloBookmark 
*bookmark)
 }
 
 
+gchar *gigolo_bookmark_get_folder_expanded(GigoloBookmark *bookmark)
+{
+       const gchar *folder;
+       const gchar *username;
+       gchar *result;
+
+       g_return_val_if_fail(bookmark != NULL, NULL);
+
+       folder = GIGOLO_BOOKMARK_GET_PRIVATE(bookmark)->folder;
+       username = gigolo_bookmark_get_user(bookmark);
+       if (NZV(folder) && username && folder[0] == '~')
+               result = g_strconcat("/home/", username, folder + 1, NULL);
+       else
+               result = g_strdup(folder);
+
+       return result;
+}
+
+
 void gigolo_bookmark_set_folder(GigoloBookmark *bookmark, const gchar *folder)
 {
        GigoloBookmarkPrivate *priv;
diff --git a/src/bookmark.h b/src/bookmark.h
index 4c8ca56..7b82bd9 100644
--- a/src/bookmark.h
+++ b/src/bookmark.h
@@ -67,6 +67,7 @@ void                          gigolo_bookmark_set_host        
        (GigoloBookmark *bookmark, const gchar *host);
 
 const gchar*           gigolo_bookmark_get_folder              (GigoloBookmark 
*bookmark);
 void                           gigolo_bookmark_set_folder              
(GigoloBookmark *bookmark, const gchar *folder);
+gchar*                         
gigolo_bookmark_get_folder_expanded(GigoloBookmark *bookmark);
 
 const gchar*           gigolo_bookmark_get_path                (GigoloBookmark 
*bookmark);
 void                           gigolo_bookmark_set_path                
(GigoloBookmark *bookmark, const gchar *path);
diff --git a/src/bookmarkeditdialog.c b/src/bookmarkeditdialog.c
index 3b1bf29..1b1398d 100644
--- a/src/bookmarkeditdialog.c
+++ b/src/bookmarkeditdialog.c
@@ -276,7 +276,6 @@ gint 
gigolo_bookmark_edit_dialog_run(GigoloBookmarkEditDialog *dialog)
                                if (tmp[0] == '/')
                                {       /* remove leading slashes */
                                        
gtk_entry_set_text(GTK_ENTRY(priv->path_entry), tmp + 1);
-
                                }
                        }
                        if (! error && gtk_widget_get_parent(priv->share_entry) 
!= NULL)
@@ -285,7 +284,6 @@ gint 
gigolo_bookmark_edit_dialog_run(GigoloBookmarkEditDialog *dialog)
                                if (tmp[0] == '/')
                                {       /* remove leading slashes */
                                        
gtk_entry_set_text(GTK_ENTRY(priv->share_entry), tmp + 1);
-
                                }
                        }
                        if (! error)
diff --git a/src/window.c b/src/window.c
index f9b5a93..d5decd4 100644
--- a/src/window.c
+++ b/src/window.c
@@ -500,7 +500,11 @@ static void action_copy_uri_cb(G_GNUC_UNUSED GtkAction 
*action, GigoloWindow *wi
 
                        b = gigolo_settings_get_bookmark_by_uri(priv->settings, 
uri);
                        if (b != NULL)
-                               setptr(uri, g_build_filename(uri, 
gigolo_bookmark_get_folder(b), NULL));
+                       {
+                               gchar *folder = 
gigolo_bookmark_get_folder_expanded(b);
+                               setptr(uri, g_build_filename(uri, folder, 
NULL));
+                               g_free(folder);
+                       }
 
                        
gtk_clipboard_set_text(gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE)), 
uri, -1);
 
@@ -536,7 +540,11 @@ static void action_open_cb(G_GNUC_UNUSED GtkAction 
*action, GigoloWindow *window
                        gigolo_backend_gvfs_get_name_and_uri_from_mount(mnt, 
NULL, &uri);
                        b = gigolo_settings_get_bookmark_by_uri(priv->settings, 
uri);
                        if (b != NULL)
-                               setptr(uri, g_build_filename(uri, 
gigolo_bookmark_get_folder(b), NULL));
+                       {
+                               gchar *folder = 
gigolo_bookmark_get_folder_expanded(b);
+                               setptr(uri, g_build_filename(uri, folder, 
NULL));
+                               g_free(folder);
+                       }
                        /* escape spaces and similar */
                        setptr(uri, g_uri_unescape_string(uri, 
G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO));
 
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to