changeset 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 8d231cab845d
children 213420512084
files gtk/dw.c gtk3/dw.c
diffstat 2 files changed, 48 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }
--- 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;
 }