# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1351229154 0 # Node ID 9c77567c5b2d48197bb7a4b348919bce90c12435 # Parent 8d231cab845d59cf786fa2d414f5c080b40e8aa3 Fixed broken support in dw_window_set_bitmap() on GTK2/3... GTK3 tested... GTK2 untested. diff -r 8d231cab845d -r 9c77567c5b2d gtk/dw.c --- a/gtk/dw.c Fri Oct 26 04:54:48 2012 +0000 +++ b/gtk/dw.c Fri Oct 26 05:25:54 2012 +0000 @@ -4581,6 +4581,7 @@ { dw_window_set_bitmap(bitmap, id, NULL); gtk_container_add (GTK_CONTAINER(tmp), bitmap); + gtk_object_set_data(GTK_OBJECT(tmp), "_dw_bitmap", bitmap); } gtk_widget_show(tmp); _create_tooltip(tmp, text); @@ -4603,9 +4604,7 @@ { GtkWidget *bitmap; GtkWidget *box; - GtkWidget *label; GtkWidget *button; - char *label_text=NULL; int _locked_by_me = FALSE; DW_MUTEX_LOCK; @@ -4614,6 +4613,8 @@ box = gtk_hbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (box), 2); + /* Create a new button */ + button = gtk_button_new(); /* Now on to the image stuff */ bitmap = dw_bitmap_new(id); if ( bitmap ) @@ -4622,17 +4623,8 @@ /* Pack the image into the box */ gtk_box_pack_start( GTK_BOX(box), bitmap, TRUE, FALSE, 3 ); gtk_widget_show( bitmap ); - } - if ( label_text ) - { - /* Create a label for the button */ - label = gtk_label_new( label_text ); - /* Pack the label into the box */ - gtk_box_pack_start( GTK_BOX(box), label, TRUE, FALSE, 3 ); - gtk_widget_show( label ); - } - /* Create a new button */ - button = gtk_button_new(); + gtk_object_set_data(GTK_OBJECT(button), "_dw_bitmap", bitmap); + } /* Pack and show all our widgets */ gtk_widget_show( box ); @@ -4972,8 +4964,11 @@ GtkWidget *pixmap = GTK_BUTTON(handle)->child; gtk_pixmap_set(GTK_PIXMAP(pixmap), tmp, bitmap); #else - GtkWidget *pixmap = gtk_button_get_image( GTK_BUTTON(handle) ); - gtk_image_set_from_pixmap(GTK_IMAGE(pixmap), tmp, bitmap); + GtkWidget *pixmap = (GtkWidget *)gtk_object_get_data( GTK_OBJECT(handle), "_dw_bitmap" ); + if(pixmap) + { + gtk_image_set_from_pixmap(GTK_IMAGE(pixmap), tmp, bitmap); + } #endif } else @@ -5055,11 +5050,27 @@ if(tmp) { -#if GTK_MAJOR_VERSION > 1 - gtk_image_set_from_pixmap(GTK_IMAGE(handle), tmp, bitmap); -#else - gtk_pixmap_set(GTK_PIXMAP(handle), tmp, bitmap); -#endif + if ( GTK_IS_BUTTON(handle) ) + { +#if GTK_MAJOR_VERSION < 2 + GtkWidget *pixmap = GTK_BUTTON(handle)->child; + gtk_pixmap_set(GTK_PIXMAP(pixmap), tmp, bitmap); +#else + GtkWidget *pixmap = (GtkWidget *)gtk_object_get_data( GTK_OBJECT(handle), "_dw_bitmap" ); + if(pixmap) + { + gtk_image_set_from_pixmap(GTK_IMAGE(pixmap), tmp, bitmap); + } +#endif + } + else + { +#if GTK_MAJOR_VERSION > 1 + gtk_image_set_from_pixmap(GTK_IMAGE(handle), tmp, bitmap); +#else + gtk_pixmap_set(GTK_PIXMAP(handle), tmp, bitmap); +#endif + } } DW_MUTEX_UNLOCK; } diff -r 8d231cab845d -r 9c77567c5b2d gtk3/dw.c --- a/gtk3/dw.c Fri Oct 26 04:54:48 2012 +0000 +++ b/gtk3/dw.c Fri Oct 26 05:25:54 2012 +0000 @@ -3918,9 +3918,7 @@ { GtkWidget *bitmap; GtkWidget *box; - GtkWidget *label; GtkWidget *button; - char *label_text=NULL; int _locked_by_me = FALSE; DW_MUTEX_LOCK; @@ -3941,14 +3939,6 @@ gtk_widget_show( bitmap ); g_object_set_data(G_OBJECT(button), "_dw_bitmap", bitmap); } - if(label_text) - { - /* Create a label for the button */ - label = gtk_label_new( label_text ); - /* Pack the label into the box */ - gtk_box_pack_start( GTK_BOX(box), label, TRUE, FALSE, 3 ); - gtk_widget_show( label ); - } /* Pack and show all our widgets */ gtk_widget_show( box ); @@ -4289,8 +4279,11 @@ { if ( GTK_IS_BUTTON(handle) ) { - GtkWidget *image = gtk_button_get_image( GTK_BUTTON(handle) ); - gtk_image_set_from_pixbuf(GTK_IMAGE(image), tmp); + GtkWidget *pixmap = (GtkWidget *)g_object_get_data( G_OBJECT(handle), "_dw_bitmap" ); + if(pixmap) + { + gtk_image_set_from_pixbuf(GTK_IMAGE(pixmap), tmp); + } } else { @@ -4349,7 +4342,18 @@ if(tmp) { - gtk_image_set_from_pixbuf(GTK_IMAGE(handle), tmp); + if ( GTK_IS_BUTTON(handle) ) + { + GtkWidget *pixmap = (GtkWidget *)g_object_get_data( G_OBJECT(handle), "_dw_bitmap" ); + if(pixmap) + { + gtk_image_set_from_pixbuf(GTK_IMAGE(pixmap), tmp); + } + } + else + { + gtk_image_set_from_pixbuf(GTK_IMAGE(handle), tmp); + } } DW_MUTEX_UNLOCK; }