diff options
author | infirit <[email protected]> | 2014-11-22 15:30:47 +0100 |
---|---|---|
committer | infirit <[email protected]> | 2014-11-22 15:30:47 +0100 |
commit | ea49a097760f4757c0fafa460724f4b642d649c0 (patch) | |
tree | 2d00384d3493328e878c1aa761e0b9b742af6896 | |
parent | ab4168815a56729801366abd329d5d47f0b0cdcf (diff) | |
download | mate-panel-ea49a097760f4757c0fafa460724f4b642d649c0.tar.bz2 mate-panel-ea49a097760f4757c0fafa460724f4b642d649c0.tar.xz |
Add a gtkimage with the current pixbuf to button-widget
We need to add a child to the button to get the right allocation of the
pixbuf. When the button is created without a pixbuf,
get_preferred_width/height are called the first time when the widget is
allocated and 0x0 size is cached by gtksizerequest. Since the widget
doesn't change its size when a pixbuf is set, gtk_widget_queue_resize()
always uses the cached values instead of calling
get_preferred_width_height() again. So the actual size, based on pixbuf
size, is never used. We are overriding the draw() method, so having a
child doesn't affect the widget rendering anyway.
Taken from gnome-panel commit: 0b8ace11087855d741cdeed97dc839db50319ae8
from: Carlos Garcia Campos <[email protected]>
-rw-r--r-- | mate-panel/button-widget.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mate-panel/button-widget.c b/mate-panel/button-widget.c index 475446c7..f7001987 100644 --- a/mate-panel/button-widget.c +++ b/mate-panel/button-widget.c @@ -240,6 +240,17 @@ button_widget_reload_pixbuf (ButtonWidget *button) (GtkIconSize) -1, NULL); g_free (error); } + + /* We need to add a child to the button to get the right allocation of the pixbuf. + * When the button is created without a pixbuf, get_preferred_width/height are + * called the first time when the widget is allocated and 0x0 size is cached by + * gtksizerequest. Since the widget doesn't change its size when a pixbuf is set, + * gtk_widget_queue_resize() always uses the cached values instead of calling + * get_preferred_width_height() again. So the actual size, based on pixbuf size, + * is never used. We are overriding the draw() method, so having a child doesn't + * affect the widget rendering anyway. + */ + gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_pixbuf (button->priv->pixbuf)); } button->priv->pixbuf_hc = make_hc_pixbuf (button->priv->pixbuf); |