Index: libxfcegui4/xfce_iconbutton.c =================================================================== RCS file: /var/cvs/xfce/xfce4/libxfcegui4/libxfcegui4/xfce_iconbutton.c,v retrieving revision 1.19 diff -u -r1.19 xfce_iconbutton.c --- libxfcegui4/xfce_iconbutton.c 15 Jun 2004 18:21:58 -0000 1.19 +++ libxfcegui4/xfce_iconbutton.c 15 Jul 2004 20:17:42 -0000 @@ -44,6 +44,21 @@ static GtkWidgetClass *parent_class = NULL; +/* workaround for http://bugzilla.gnome.org/show_bug.cgi?id=142417 */ +static void +_style_set_cb(GtkWidget *w, GtkStyle *prev_style, gpointer user_data) +{ + GtkStyle *style; + GList *children, *l; + + style = gtk_rc_get_style_by_paths (gtk_settings_get_default (), + "GtkButton", "GtkButton", GTK_TYPE_BUTTON); + children = gtk_container_get_children (GTK_CONTAINER (w)); + for(l = children; l; l = l->next) + if(GTK_IS_WIDGET (l->data)) + gtk_widget_set_style(GTK_WIDGET (l->data), style); +} + GtkType xfce_iconbutton_get_type (void) { @@ -91,7 +106,12 @@ GtkWidget * xfce_iconbutton_new (void) { - return GTK_WIDGET (g_object_new (xfce_iconbutton_get_type (), NULL)); + GtkWidget *iconbutton = GTK_WIDGET (g_object_new (xfce_iconbutton_get_type (), NULL)); + + g_signal_connect (G_OBJECT (iconbutton), "style-set", + G_CALLBACK (_style_set_cb), NULL); + + return iconbutton; } GtkWidget * @@ -102,6 +122,9 @@ iconbutton = xfce_iconbutton_new (); xfce_iconbutton_set_pixbuf (XFCE_ICONBUTTON (iconbutton), pixbuf); + g_signal_connect (G_OBJECT (iconbutton), "style-set", + G_CALLBACK (_style_set_cb), NULL); + return iconbutton; } @@ -114,5 +137,3 @@ xfce_scaled_image_set_from_pixbuf (XFCE_SCALED_IMAGE (iconbutton->image), pixbuf); } - -