-void wxBitmapButton::SetBitmapLabel( const wxBitmap& bitmap )
-{
- wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
-
- if (!m_bitmap.Ok()) return;
- m_bitmap = bitmap;
-
- SetBitmap();
+ GtkWidget *child = BUTTON_CHILD(m_widget);
+ if (child == NULL)
+ {
+ // initial bitmap
+ GtkWidget *pixmap;
+#ifdef __WXGTK20__
+ if (the_one.HasPixbuf())
+ pixmap = gtk_image_new_from_pixbuf(the_one.GetPixbuf());
+ else
+ pixmap = gtk_image_new_from_pixmap(the_one.GetPixmap(), mask);
+#else
+ pixmap = gtk_pixmap_new(the_one.GetPixmap(), mask);
+#endif
+ gtk_widget_show(pixmap);
+ gtk_container_add(GTK_CONTAINER(m_widget), pixmap);
+ }
+ else
+ { // subsequent bitmaps
+#ifdef __WXGTK20__
+ GtkImage *pixmap = GTK_IMAGE(child);
+ if (the_one.HasPixbuf())
+ gtk_image_set_from_pixbuf(pixmap, the_one.GetPixbuf());
+ else
+ gtk_image_set_from_pixmap(pixmap, the_one.GetPixmap(), mask);
+#else
+ GtkPixmap *pixmap = GTK_PIXMAP(child);
+ gtk_pixmap_set(pixmap, the_one.GetPixmap(), mask);
+#endif
+ }