Index: thunar/thunar-shortcuts-model.c =================================================================== --- thunar/thunar-shortcuts-model.c (revision 22696) +++ thunar/thunar-shortcuts-model.c (working copy) @@ -248,7 +248,7 @@ { ThunarVfsVolume *volume; ThunarShortcut *shortcut; - ThunarVfsPath *system_path_list[3] = { thunar_vfs_path_get_for_home (), thunar_vfs_path_get_for_trash (), thunar_vfs_path_get_for_root () }; + ThunarVfsPath *system_path_list[4]; ThunarVfsPath *fhome; ThunarVfsPath *fpath; GtkTreePath *path; @@ -264,6 +264,12 @@ g_signal_connect (G_OBJECT (model->volume_manager), "volumes-added", G_CALLBACK (thunar_shortcuts_model_volumes_added), model); g_signal_connect (G_OBJECT (model->volume_manager), "volumes-removed", G_CALLBACK (thunar_shortcuts_model_volumes_removed), model); + /* determine the system-defined paths */ + system_path_list[0] = thunar_vfs_path_get_for_home (); + system_path_list[1] = thunar_vfs_path_get_for_trash (); + system_path_list[2] = thunar_vfs_path_relative (system_path_list[0], "Desktop"); + system_path_list[3] = thunar_vfs_path_get_for_root (); + /* will be used to append the shortcuts to the list */ path = gtk_tree_path_new_from_indices (0, -1); Index: thunar/thunar-file.c =================================================================== --- thunar/thunar-file.c (revision 22696) +++ thunar/thunar-file.c (working copy) @@ -1481,7 +1481,6 @@ thunar_file_get_emblem_names (ThunarFile *file) { const ThunarVfsInfo *info = file->info; - const ThunarVfsPath *parent; const gchar *emblem_string; gchar **emblem_names; GList *emblems = NULL; @@ -1509,13 +1508,6 @@ emblems = g_list_append (emblems, *emblem_names); } - if (G_UNLIKELY (strcmp (info->display_name, "Desktop") == 0)) - { - parent = thunar_vfs_path_get_parent (info->path); - if (G_LIKELY (parent != NULL) && thunar_vfs_path_is_home (parent)) - emblems = g_list_prepend (emblems, THUNAR_FILE_EMBLEM_NAME_DESKTOP); - } - if ((info->flags & THUNAR_VFS_FILE_FLAGS_SYMLINK) != 0) emblems = g_list_prepend (emblems, THUNAR_FILE_EMBLEM_NAME_SYMBOLIC_LINK); @@ -1623,6 +1615,13 @@ return "gnome-fs-home"; } + /* special icon for the desktop node */ + if (G_UNLIKELY (thunar_file_is_desktop (file)) + && gtk_icon_theme_has_icon (icon_theme, "gnome-fs-desktop")) + { + return "gnome-fs-desktop"; + } + /* try to be smart when determining icons for executable files * in that we use the name of the file as icon name (which will * work for quite a lot of binaries, e.g. 'Terminal', 'mousepad', Index: thunar/thunar-file.h =================================================================== --- thunar/thunar-file.h (revision 22696) +++ thunar/thunar-file.h (working copy) @@ -443,6 +443,18 @@ #define thunar_file_is_home(file) (thunar_vfs_path_is_home (THUNAR_FILE ((file))->info->path)) /** + * thunar_file_is_desktop: + * @file : a #ThunarFile. + * + * Checks whether @file refers to the users desktop directory. + * + * Return value: %TRUE if @file is the users desktop directory. + **/ +#define thunar_file_is_desktop(file) (!thunar_vfs_path_is_root (thunar_file_get_path (file)) \ + && thunar_vfs_path_is_home (thunar_vfs_path_get_parent (thunar_file_get_path (file))) \ + && strcmp (thunar_file_get_display_name (file), "Desktop") == 0) + +/** * thunar_file_is_regular: * @file : a #ThunarFile. * Index: thunar/thunar-location-buttons.c =================================================================== --- thunar/thunar-location-buttons.c (revision 22696) +++ thunar/thunar-location-buttons.c (working copy) @@ -24,6 +24,13 @@ #include #endif +#ifdef HAVE_MEMORY_H +#include +#endif +#ifdef HAVE_STRING_H +#include +#endif + #include #include #include @@ -546,8 +553,8 @@ gtk_container_add (GTK_CONTAINER (buttons), button); gtk_widget_show (button); - /* we use 'Home' as possible root, as well as real root nodes */ - if (!thunar_file_is_home (file) && !thunar_file_is_root (file)) + /* we use 'Home' and 'Desktop' as possible roots, as well as real root nodes */ + if (!thunar_file_is_desktop (file) && !thunar_file_is_home (file) && !thunar_file_is_root (file)) file_parent = thunar_file_get_parent (file, NULL); else file_parent = NULL;