summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2006-08-15 17:28:34 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2006-08-15 17:28:34 +0000
commitfbf63397004fb3dcf8bf6a12c1373dd17ff210a9 (patch)
tree3a596dc59637267de2520a7cd9c915f671b2e0e8 /gtk
parent98c23811f5ae9ffae0ecfea31ab41d4b656ac40f (diff)
downloadgtk+-fbf63397004fb3dcf8bf6a12c1373dd17ff210a9.tar.gz
Do better fallbacks if the icon theme does not have icons. (#345666,
2006-08-15 Matthias Clasen <mclasen@redhat.com> * gtk/gtkfilesystem.c (gtk_file_info_render_icon) (gtk_file_system_volume_render_icon): Do better fallbacks if the icon theme does not have icons. (#345666, Kazuki Iwamoto)
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkfilesystem.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c
index c7f965e23f..493960239d 100644
--- a/gtk/gtkfilesystem.c
+++ b/gtk/gtkfilesystem.c
@@ -301,15 +301,20 @@ gtk_file_info_render_icon (const GtkFileInfo *info,
GtkIconTheme *icon_theme;
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
- pixbuf = gtk_icon_theme_load_icon (icon_theme, info->icon_name,
- pixel_size, 0, NULL);
+ if (gtk_icon_theme_has_icon (icon_theme, info->icon_name))
+ pixbuf = gtk_icon_theme_load_icon (icon_theme, info->icon_name,
+ pixel_size, 0, NULL);
}
}
if (!pixbuf)
{
/* load a fallback icon */
- pixbuf = gtk_widget_render_icon (widget, GTK_STOCK_FILE, GTK_ICON_SIZE_SMALL_TOOLBAR, NULL);
+ pixbuf = gtk_widget_render_icon (widget,
+ gtk_file_info_get_is_folder (info)
+ ? GTK_STOCK_DIRECTORY : GTK_STOCK_FILE,
+ GTK_ICON_SIZE_SMALL_TOOLBAR,
+ NULL);
if (!pixbuf && error)
g_set_error (error,
GTK_FILE_SYSTEM_ERROR,
@@ -648,7 +653,7 @@ gtk_file_system_volume_render_icon (GtkFileSystem *file_system,
GError **error)
{
gchar *icon_name;
- GdkPixbuf *pixbuf;
+ GdkPixbuf *pixbuf = NULL;
g_return_val_if_fail (GTK_IS_FILE_SYSTEM (file_system), NULL);
g_return_val_if_fail (volume != NULL, NULL);
@@ -658,14 +663,22 @@ gtk_file_system_volume_render_icon (GtkFileSystem *file_system,
icon_name = gtk_file_system_volume_get_icon_name (file_system, volume,
error);
- if (!icon_name)
+ if (icon_name)
{
- return NULL;
+ GtkIconTheme *icon_theme;
+
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
+ if (gtk_icon_theme_has_icon (icon_theme, icon_name))
+ pixbuf = gtk_icon_theme_load_icon (icon_theme,
+ icon_name, pixel_size, 0, NULL);
+ g_free (icon_name);
}
- pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget)),
- icon_name, pixel_size, 0, NULL);
- g_free (icon_name);
+ if (!pixbuf)
+ pixbuf = gtk_widget_render_icon (widget,
+ GTK_STOCK_HARDDISK,
+ GTK_ICON_SIZE_SMALL_TOOLBAR,
+ NULL);
return pixbuf;
}