From 66649cc0282d52285a4b40403c9042d2bad84770 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 9 Apr 2005 02:51:53 +0000 Subject: [PATCH] If a stock_id is unknown, display the missing image. (#169870, Steven 2005-04-08 Matthias Clasen * gtk/gtkimage.c (gtk_image_expose, gtk_image_calc_size): If a stock_id is unknown, display the missing image. (#169870, Steven Walter) --- ChangeLog | 4 ++++ ChangeLog.pre-2-10 | 4 ++++ ChangeLog.pre-2-8 | 4 ++++ gtk/gtkimage.c | 20 ++++++++++++++++---- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5b7ed5d8b2..922ad44501 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-04-08 Matthias Clasen + * gtk/gtkimage.c (gtk_image_expose, gtk_image_calc_size): + If a stock_id is unknown, display the missing image. (#169870, + Steven Walter) + * gtk/gtkiconcache.c (icon_name_hash): Use the same function as in updateiconcache.c. (spotted by Morten Welinder) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 5b7ed5d8b2..922ad44501 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,9 @@ 2005-04-08 Matthias Clasen + * gtk/gtkimage.c (gtk_image_expose, gtk_image_calc_size): + If a stock_id is unknown, display the missing image. (#169870, + Steven Walter) + * gtk/gtkiconcache.c (icon_name_hash): Use the same function as in updateiconcache.c. (spotted by Morten Welinder) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 5b7ed5d8b2..922ad44501 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,9 @@ 2005-04-08 Matthias Clasen + * gtk/gtkimage.c (gtk_image_expose, gtk_image_calc_size): + If a stock_id is unknown, display the missing image. (#169870, + Steven Walter) + * gtk/gtkiconcache.c (icon_name_hash): Use the same function as in updateiconcache.c. (spotted by Morten Welinder) diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c index 719c02b004..b512292779 100644 --- a/gtk/gtkimage.c +++ b/gtk/gtkimage.c @@ -1547,6 +1547,9 @@ gtk_image_expose (GtkWidget *widget, GdkBitmap *mask; GdkPixbuf *pixbuf; gboolean needs_state_transform; + GtkStockItem item; + gchar *stock_id; + image = GTK_IMAGE (widget); misc = GTK_MISC (widget); @@ -1634,8 +1637,7 @@ gtk_image_expose (GtkWidget *widget, case GTK_IMAGE_PIXBUF: image_bound.width = gdk_pixbuf_get_width (image->data.pixbuf.pixbuf); - image_bound.height = gdk_pixbuf_get_height (image->data.pixbuf.pixbuf); - + image_bound.height = gdk_pixbuf_get_height (image->data.pixbuf.pixbuf); if (rectangle_intersect_even (&area, &image_bound) && needs_state_transform) @@ -1655,8 +1657,12 @@ gtk_image_expose (GtkWidget *widget, break; case GTK_IMAGE_STOCK: + if (gtk_stock_lookup (image->data.stock.stock_id, &item)) + stock_id = image->data.stock.stock_id; + else + stock_id = GTK_STOCK_MISSING_IMAGE; pixbuf = gtk_widget_render_icon (widget, - image->data.stock.stock_id, + stock_id, image->icon_size, NULL); if (pixbuf) @@ -1951,6 +1957,8 @@ gtk_image_calc_size (GtkImage *image) { GtkWidget *widget = GTK_WIDGET (image); GdkPixbuf *pixbuf = NULL; + GtkStockItem item; + gchar *stock_id; /* We update stock/icon set on every size request, because * the theme could have affected the size; for other kinds of @@ -1960,8 +1968,12 @@ gtk_image_calc_size (GtkImage *image) switch (image->storage_type) { case GTK_IMAGE_STOCK: + if (gtk_stock_lookup (image->data.stock.stock_id, &item)) + stock_id = image->data.stock.stock_id; + else + stock_id = GTK_STOCK_MISSING_IMAGE; pixbuf = gtk_widget_render_icon (widget, - image->data.stock.stock_id, + stock_id, image->icon_size, NULL); break; -- GitLab