Updating branch refs/heads/nick/on-demand-content-type to c9d68a659fb9633c2456de8cddc65d873ce427ed (commit) from 97f0ffcd69771383e79c324176d17815e89b399d (commit)
commit c9d68a659fb9633c2456de8cddc65d873ce427ed Author: Nick Schermer <n...@xfce.org> Date: Sun Nov 18 21:33:39 2012 +0100 Special case handing for trash icons. thunar/thunar-file.c | 56 ++++++++++++++++++++++++++++--------------------- 1 files changed, 32 insertions(+), 24 deletions(-) diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c index 3325b30..07a983d 100644 --- a/thunar/thunar-file.c +++ b/thunar/thunar-file.c @@ -3482,47 +3482,55 @@ thunar_file_get_icon_name (ThunarFile *file, return thunar_file_get_icon_name_for_state (file->icon_name, icon_state); /* the system root folder has a special icon */ - if (thunar_file_is_directory (file) - && thunar_file_is_local (file)) + if (thunar_file_is_directory (file)) { - path = g_file_get_path (file->gfile); - if (G_LIKELY (path != NULL)) + if (G_LIKELY (thunar_file_is_local (file))) { - if (strcmp (path, G_DIR_SEPARATOR_S) == 0) - *special_names = "drive-harddisk"; - else if (strcmp (path, xfce_get_homedir ()) == 0) - *special_names = "user-home"; - else + path = g_file_get_path (file->gfile); + if (G_LIKELY (path != NULL)) { - for (i = 0; i < G_N_ELEMENTS (thunar_file_dirs); i++) + if (strcmp (path, G_DIR_SEPARATOR_S) == 0) + *special_names = "drive-harddisk"; + else if (strcmp (path, xfce_get_homedir ()) == 0) + *special_names = "user-home"; + else { - special_dir = g_get_user_special_dir (thunar_file_dirs[i].type); - if (special_dir != NULL - && strcmp (path, special_dir) == 0) + for (i = 0; i < G_N_ELEMENTS (thunar_file_dirs); i++) { - *special_names = thunar_file_dirs[i].icon_name; - break; + special_dir = g_get_user_special_dir (thunar_file_dirs[i].type); + if (special_dir != NULL + && strcmp (path, special_dir) == 0) + { + *special_names = thunar_file_dirs[i].icon_name; + break; + } } } - } - g_free (path); - - if (*special_names != NULL) - { - names = special_names; - goto check_names; + g_free (path); } } + else if (g_file_has_uri_scheme (file->gfile, "trash") + && !thunar_file_has_parent (file)) + { + special_names[0] = thunar_file_get_item_count (file) > 0 ? "user-trash-full" : "user-trash"; + special_names[1] = "user-trash"; + } + + if (*special_names != NULL) + { + names = special_names; + goto check_names; + } } /* try again later */ if (file->info == NULL) return NULL; - /* lookup for content type, just like gio does*/ + /* lookup for content type, just like gio does for local files */ icon = g_content_type_get_icon (thunar_file_get_content_type (file)); - if (icon != NULL) + if (G_LIKELY (icon != NULL)) { if (G_IS_THEMED_ICON (icon)) { _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits