add widget parameter so we can get the right icon theme for the screen. If

2008-06-28  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpviewrendererimagefile.c
	(gimp_view_renderer_imagefile_get_icon): add widget parameter so
	we can get the right icon theme for the screen. If building
	against GTK+ >= 2.13.4, use GFile to get proper file type icons.

	(gimp_view_renderer_imagefile_render): pass the widget.

	(get_icon_fallback): remove this unused function.


svn path=/trunk/; revision=26015
This commit is contained in:
Michael Natterer 2008-06-28 20:44:57 +00:00 committed by Michael Natterer
parent b8aa39d01c
commit 27b54c0fb6
2 changed files with 42 additions and 16 deletions

View File

@ -1,3 +1,14 @@
2008-06-28 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpviewrendererimagefile.c
(gimp_view_renderer_imagefile_get_icon): add widget parameter so
we can get the right icon theme for the screen. If building
against GTK+ >= 2.13.4, use GFile to get proper file type icons.
(gimp_view_renderer_imagefile_render): pass the widget.
(get_icon_fallback): remove this unused function.
2008-06-28 Martin Nordholts <martinn@svn.gnome.org>
* app/widgets/gtkscalebutton.h: Remove uses of GSEAL macro to make

View File

@ -40,6 +40,7 @@ static void gimp_view_renderer_imagefile_render (GimpViewRenderer *rend
GtkWidget *widget);
static GdkPixbuf * gimp_view_renderer_imagefile_get_icon (GimpImagefile *imagefile,
GtkWidget *widget,
gint size);
@ -75,6 +76,7 @@ gimp_view_renderer_imagefile_render (GimpViewRenderer *renderer,
GimpImagefile *imagefile = GIMP_IMAGEFILE (renderer->viewable);
pixbuf = gimp_view_renderer_imagefile_get_icon (imagefile,
widget,
MIN (renderer->width,
renderer->height));
}
@ -150,43 +152,56 @@ get_icon_for_mime_type (const char *mime_type,
return pixbuf;
}
static GdkPixbuf *
get_icon_fallback (const gchar *icon_name,
gint size)
{
return gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), icon_name,
size,
GTK_ICON_LOOKUP_USE_BUILTIN,
NULL);
}
static GdkPixbuf *
gimp_view_renderer_imagefile_get_icon (GimpImagefile *imagefile,
GtkWidget *widget,
gint size)
{
GdkPixbuf *retval = NULL;
GdkScreen *screen = gtk_widget_get_screen (widget);
GtkIconTheme *icon_theme = gtk_icon_theme_get_for_screen (screen);
GdkPixbuf *pixbuf = NULL;
if (! gimp_object_get_name (GIMP_OBJECT (imagefile)))
return NULL;
if (imagefile->thumbnail->image_mimetype)
#if GTK_CHECK_VERSION (2, 13, 4)
if (! pixbuf)
{
retval = get_icon_for_mime_type (imagefile->thumbnail->image_mimetype,
GFile *file;
GFileInfo *file_info;
GIcon *icon;
GtkIconInfo *info;
file = g_file_new_for_uri (gimp_object_get_name (GIMP_OBJECT (imagefile)));
file_info = g_file_query_info (file, "standard::icon", 0, NULL, NULL);
icon = g_file_info_get_icon (file_info);
info = gtk_icon_theme_lookup_by_gicon (icon_theme, icon, size, 0);
pixbuf = gtk_icon_info_load_icon (info, NULL);
g_object_unref (file);
g_object_unref (file_info);
}
#endif
if (! pixbuf && imagefile->thumbnail->image_mimetype)
{
pixbuf = get_icon_for_mime_type (imagefile->thumbnail->image_mimetype,
size);
}
if (! retval)
if (! pixbuf)
{
const gchar *icon_name = GTK_STOCK_FILE;
if (imagefile->thumbnail->image_state == GIMP_THUMB_STATE_FOLDER)
icon_name = GTK_STOCK_DIRECTORY;
retval = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
pixbuf = gtk_icon_theme_load_icon (icon_theme,
icon_name, size,
GTK_ICON_LOOKUP_USE_BUILTIN,
NULL);
}
return retval;
return pixbuf;
}