diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2012-09-26 13:12:42 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2012-09-26 13:12:42 -0400 |
commit | 6f1e24dfe88261ea8d6d80707bab11c95c8486fb (patch) | |
tree | 16e81303c1a376df858b9d8c1e331ff43a7bb611 /libnautilus-private/nautilus-bookmark.c | |
parent | b72d57b038e50172fac2fafdc6c26660378aab34 (diff) | |
download | nautilus-6f1e24dfe88261ea8d6d80707bab11c95c8486fb.tar.gz |
bookmark: include icons for XDG special directories in NautilusBookmark
This ensures we also return the right icon in the shell search provider
when an XDG directory is in the results.
Diffstat (limited to 'libnautilus-private/nautilus-bookmark.c')
-rw-r--r-- | libnautilus-private/nautilus-bookmark.c | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/libnautilus-private/nautilus-bookmark.c b/libnautilus-private/nautilus-bookmark.c index 3e15b7982..f5995c4d7 100644 --- a/libnautilus-private/nautilus-bookmark.c +++ b/libnautilus-private/nautilus-bookmark.c @@ -179,6 +179,43 @@ apply_warning_emblem (GIcon **base, *base = emblemed_icon; } +static GIcon * +get_native_icon (NautilusBookmark *bookmark, + gboolean symbolic) +{ + gint idx; + GIcon *icon = NULL; + + if (bookmark->details->file == NULL) { + goto out; + } + + for (idx = 0; idx < G_USER_N_DIRECTORIES; idx++) { + if (nautilus_file_is_user_special_directory (bookmark->details->file, idx)) { + break; + } + } + + if (idx < G_USER_N_DIRECTORIES) { + if (symbolic) { + icon = nautilus_special_directory_get_symbolic_icon (idx); + } else { + icon = nautilus_special_directory_get_icon (idx); + } + } + + out: + if (icon == NULL) { + if (symbolic) { + icon = g_themed_icon_new (NAUTILUS_ICON_FOLDER); + } else { + icon = g_themed_icon_new (NAUTILUS_ICON_FULLCOLOR_FOLDER); + } + } + + return icon; +} + static void nautilus_bookmark_set_icon_to_default (NautilusBookmark *bookmark) { @@ -186,8 +223,8 @@ nautilus_bookmark_set_icon_to_default (NautilusBookmark *bookmark) char *uri; if (g_file_is_native (bookmark->details->location)) { - symbolic_icon = g_themed_icon_new (NAUTILUS_ICON_FOLDER); - icon = g_themed_icon_new (NAUTILUS_ICON_FULLCOLOR_FOLDER); + symbolic_icon = get_native_icon (bookmark, TRUE); + icon = get_native_icon (bookmark, FALSE); } else { uri = nautilus_bookmark_get_uri (bookmark); if (g_str_has_prefix (uri, EEL_SEARCH_URI)) { |