Mercurial > dwindows
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 /* |