statusicon: Rely on GtkIconHelper for pixbuf resizes

The same is now achieved by forcing pixbuf rescaling on the icon helper
This commit is contained in:
Carlos Garnacho 2012-07-13 15:57:45 +02:00
parent 77221c18a3
commit 37262f9725

View File

@ -836,6 +836,7 @@ gtk_status_icon_init (GtkStatusIcon *status_icon)
status_icon->priv = priv; status_icon->priv = priv;
priv->icon_helper = _gtk_icon_helper_new (); priv->icon_helper = _gtk_icon_helper_new ();
_gtk_icon_helper_set_force_scale_pixbuf (priv->icon_helper, TRUE);
priv->visible = TRUE; priv->visible = TRUE;
#ifdef GDK_WINDOWING_X11 #ifdef GDK_WINDOWING_X11
@ -1352,7 +1353,6 @@ gtk_status_icon_update_image (GtkStatusIcon *status_icon)
#endif #endif
GtkStyleContext *context; GtkStyleContext *context;
GtkWidget *widget; GtkWidget *widget;
GtkImageType storage_type = _gtk_icon_helper_get_storage_type (priv->icon_helper);
GdkPixbuf *pixbuf; GdkPixbuf *pixbuf;
gint round_size; gint round_size;
@ -1365,32 +1365,8 @@ gtk_status_icon_update_image (GtkStatusIcon *status_icon)
context = gtk_widget_get_style_context (widget); context = gtk_widget_get_style_context (widget);
round_size = round_pixel_size (widget, priv->size); round_size = round_pixel_size (widget, priv->size);
if (storage_type == GTK_IMAGE_PIXBUF)
{
GdkPixbuf *scaled;
gint width;
gint height;
pixbuf = _gtk_icon_helper_ensure_pixbuf (priv->icon_helper, context);
width = gdk_pixbuf_get_width (pixbuf);
height = gdk_pixbuf_get_height (pixbuf);
if (width > round_size || height > round_size)
{
scaled = gdk_pixbuf_scale_simple (pixbuf,
MIN (round_size, width),
MIN (round_size, height),
GDK_INTERP_BILINEAR);
g_object_unref (pixbuf);
pixbuf = scaled;
}
}
else
{
_gtk_icon_helper_set_pixel_size (priv->icon_helper, round_size); _gtk_icon_helper_set_pixel_size (priv->icon_helper, round_size);
pixbuf = _gtk_icon_helper_ensure_pixbuf (priv->icon_helper, context); pixbuf = _gtk_icon_helper_ensure_pixbuf (priv->icon_helper, context);
}
if (pixbuf != NULL) if (pixbuf != NULL)
{ {