Index: libxfcegui4/icons.c =================================================================== --- libxfcegui4/icons.c (revision 20124) +++ libxfcegui4/icons.c (working copy) @@ -26,6 +26,7 @@ #ifdef HAVE_STRING_H #include #endif +#include #ifndef PATH_MAX #define PATH_MAX 1024 @@ -136,6 +137,7 @@ { GdkPixbuf *pix = NULL; gchar *name_fixed = NULL, *p; + int w, h; g_return_val_if_fail(name, NULL); @@ -160,6 +162,29 @@ g_free(name_fixed); + w = gdk_pixbuf_get_width (pix); + h = gdk_pixbuf_get_height (pix); + + if (h > size || w > size) + { + GdkPixbuf *scale; + + if (h > w) + { + w = rint ((double)w * (double)size / (double)h); + h = size; + } + else + { + h = rint ((double)h * (double)size / (double)w); + w = size; + } + + scale = gdk_pixbuf_scale_simple (pix, w, h, GDK_INTERP_BILINEAR); + g_object_unref (pix); + pix = scale; + } + return pix; }