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