comparison gtk/dw.c @ 1823:9c77567c5b2d

Fixed broken support in dw_window_set_bitmap() on GTK2/3... GTK3 tested... GTK2 untested.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 26 Oct 2012 05:25:54 +0000
parents 7f549994b633
children 6b90c7e9e520
comparison
equal deleted inserted replaced
1822:8d231cab845d 1823:9c77567c5b2d
4579 4579
4580 if(bitmap) 4580 if(bitmap)
4581 { 4581 {
4582 dw_window_set_bitmap(bitmap, id, NULL); 4582 dw_window_set_bitmap(bitmap, id, NULL);
4583 gtk_container_add (GTK_CONTAINER(tmp), bitmap); 4583 gtk_container_add (GTK_CONTAINER(tmp), bitmap);
4584 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_bitmap", bitmap);
4584 } 4585 }
4585 gtk_widget_show(tmp); 4586 gtk_widget_show(tmp);
4586 _create_tooltip(tmp, text); 4587 _create_tooltip(tmp, text);
4587 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); 4588 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
4588 DW_MUTEX_UNLOCK; 4589 DW_MUTEX_UNLOCK;
4601 */ 4602 */
4602 HWND dw_bitmapbutton_new_from_file(char *text, unsigned long id, char *filename) 4603 HWND dw_bitmapbutton_new_from_file(char *text, unsigned long id, char *filename)
4603 { 4604 {
4604 GtkWidget *bitmap; 4605 GtkWidget *bitmap;
4605 GtkWidget *box; 4606 GtkWidget *box;
4606 GtkWidget *label;
4607 GtkWidget *button; 4607 GtkWidget *button;
4608 char *label_text=NULL;
4609 int _locked_by_me = FALSE; 4608 int _locked_by_me = FALSE;
4610 4609
4611 DW_MUTEX_LOCK; 4610 DW_MUTEX_LOCK;
4612 4611
4613 /* Create box for image and label */ 4612 /* Create box for image and label */
4614 box = gtk_hbox_new (FALSE, 0); 4613 box = gtk_hbox_new (FALSE, 0);
4615 gtk_container_set_border_width (GTK_CONTAINER (box), 2); 4614 gtk_container_set_border_width (GTK_CONTAINER (box), 2);
4616 4615
4616 /* Create a new button */
4617 button = gtk_button_new();
4617 /* Now on to the image stuff */ 4618 /* Now on to the image stuff */
4618 bitmap = dw_bitmap_new(id); 4619 bitmap = dw_bitmap_new(id);
4619 if ( bitmap ) 4620 if ( bitmap )
4620 { 4621 {
4621 dw_window_set_bitmap( bitmap, 0, filename ); 4622 dw_window_set_bitmap( bitmap, 0, filename );
4622 /* Pack the image into the box */ 4623 /* Pack the image into the box */
4623 gtk_box_pack_start( GTK_BOX(box), bitmap, TRUE, FALSE, 3 ); 4624 gtk_box_pack_start( GTK_BOX(box), bitmap, TRUE, FALSE, 3 );
4624 gtk_widget_show( bitmap ); 4625 gtk_widget_show( bitmap );
4625 } 4626 gtk_object_set_data(GTK_OBJECT(button), "_dw_bitmap", bitmap);
4626 if ( label_text ) 4627 }
4627 {
4628 /* Create a label for the button */
4629 label = gtk_label_new( label_text );
4630 /* Pack the label into the box */
4631 gtk_box_pack_start( GTK_BOX(box), label, TRUE, FALSE, 3 );
4632 gtk_widget_show( label );
4633 }
4634 /* Create a new button */
4635 button = gtk_button_new();
4636 4628
4637 /* Pack and show all our widgets */ 4629 /* Pack and show all our widgets */
4638 gtk_widget_show( box ); 4630 gtk_widget_show( box );
4639 gtk_container_add( GTK_CONTAINER(button), box ); 4631 gtk_container_add( GTK_CONTAINER(button), box );
4640 gtk_widget_show( button ); 4632 gtk_widget_show( button );
4970 { 4962 {
4971 #if GTK_MAJOR_VERSION < 2 4963 #if GTK_MAJOR_VERSION < 2
4972 GtkWidget *pixmap = GTK_BUTTON(handle)->child; 4964 GtkWidget *pixmap = GTK_BUTTON(handle)->child;
4973 gtk_pixmap_set(GTK_PIXMAP(pixmap), tmp, bitmap); 4965 gtk_pixmap_set(GTK_PIXMAP(pixmap), tmp, bitmap);
4974 #else 4966 #else
4975 GtkWidget *pixmap = gtk_button_get_image( GTK_BUTTON(handle) ); 4967 GtkWidget *pixmap = (GtkWidget *)gtk_object_get_data( GTK_OBJECT(handle), "_dw_bitmap" );
4976 gtk_image_set_from_pixmap(GTK_IMAGE(pixmap), tmp, bitmap); 4968 if(pixmap)
4969 {
4970 gtk_image_set_from_pixmap(GTK_IMAGE(pixmap), tmp, bitmap);
4971 }
4977 #endif 4972 #endif
4978 } 4973 }
4979 else 4974 else
4980 { 4975 {
4981 #if GTK_MAJOR_VERSION > 1 4976 #if GTK_MAJOR_VERSION > 1
5053 else if (id) 5048 else if (id)
5054 tmp = _find_pixmap(&bitmap, (HICN)id, handle, NULL, NULL); 5049 tmp = _find_pixmap(&bitmap, (HICN)id, handle, NULL, NULL);
5055 5050
5056 if(tmp) 5051 if(tmp)
5057 { 5052 {
5053 if ( GTK_IS_BUTTON(handle) )
5054 {
5055 #if GTK_MAJOR_VERSION < 2
5056 GtkWidget *pixmap = GTK_BUTTON(handle)->child;
5057 gtk_pixmap_set(GTK_PIXMAP(pixmap), tmp, bitmap);
5058 #else
5059 GtkWidget *pixmap = (GtkWidget *)gtk_object_get_data( GTK_OBJECT(handle), "_dw_bitmap" );
5060 if(pixmap)
5061 {
5062 gtk_image_set_from_pixmap(GTK_IMAGE(pixmap), tmp, bitmap);
5063 }
5064 #endif
5065 }
5066 else
5067 {
5058 #if GTK_MAJOR_VERSION > 1 5068 #if GTK_MAJOR_VERSION > 1
5059 gtk_image_set_from_pixmap(GTK_IMAGE(handle), tmp, bitmap); 5069 gtk_image_set_from_pixmap(GTK_IMAGE(handle), tmp, bitmap);
5060 #else 5070 #else
5061 gtk_pixmap_set(GTK_PIXMAP(handle), tmp, bitmap); 5071 gtk_pixmap_set(GTK_PIXMAP(handle), tmp, bitmap);
5062 #endif 5072 #endif
5073 }
5063 } 5074 }
5064 DW_MUTEX_UNLOCK; 5075 DW_MUTEX_UNLOCK;
5065 } 5076 }
5066 5077
5067 /* 5078 /*