+ if ( tool->IsButton() )
+ {
+ wxBitmap bitmap = tool->GetBitmap1();
+
+ wxCHECK_MSG( bitmap.Ok(), FALSE,
+ wxT("invalid bitmap for wxToolBar icon") );
+
+ wxCHECK_MSG( bitmap.GetBitmap() == NULL, FALSE,
+ wxT("wxToolBar doesn't support GdkBitmap") );
+
+ wxCHECK_MSG( bitmap.GetPixmap() != NULL, FALSE,
+ wxT("wxToolBar::Add needs a wxBitmap") );
+
+ GtkWidget *tool_pixmap = (GtkWidget *)NULL;
+
+ GdkPixmap *pixmap = bitmap.GetPixmap();
+
+ GdkBitmap *mask = (GdkBitmap *)NULL;
+ if ( bitmap.GetMask() )
+ mask = bitmap.GetMask()->GetBitmap();
+
+ tool_pixmap = gtk_pixmap_new( pixmap, mask );
+#if (GTK_MINOR_VERSION > 0)
+ gtk_pixmap_set_build_insensitive( GTK_PIXMAP(tool_pixmap), TRUE );
+#endif
+
+ gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 );
+
+ tool->m_pixmap = tool_pixmap;
+ }
+
+ switch ( tool->GetStyle() )
+ {
+ case wxTOOL_STYLE_BUTTON:
+ tool->m_item = gtk_toolbar_insert_element
+ (
+ m_toolbar,
+ tool->CanBeToggled()
+ ? GTK_TOOLBAR_CHILD_TOGGLEBUTTON
+ : GTK_TOOLBAR_CHILD_BUTTON,
+ (GtkWidget *)NULL,
+ (const char *)NULL,
+ tool->GetShortHelp().mbc_str(),
+ "", // tooltip_private_text (?)
+ tool->m_pixmap,
+ (GtkSignalFunc)gtk_toolbar_callback,
+ (gpointer)tool,
+ pos
+ );
+
+ if ( !tool->m_item )
+ {
+ wxFAIL_MSG( _T("gtk_toolbar_insert_element() failed") );
+
+ return FALSE;
+ }
+
+ gtk_signal_connect( GTK_OBJECT(tool->m_item),
+ "enter_notify_event",
+ GTK_SIGNAL_FUNC(gtk_toolbar_enter_callback),
+ (gpointer)tool );
+ break;
+
+ case wxTOOL_STYLE_SEPARATOR:
+ gtk_toolbar_append_space( m_toolbar );
+
+ // skip the rest
+ return TRUE;
+
+ case wxTOOL_STYLE_CONTROL:
+ gtk_toolbar_insert_widget(
+ m_toolbar,
+ tool->GetControl()->m_widget,
+ (const char *) NULL,
+ (const char *) NULL,
+ pos
+ );
+ break;
+ }
+
+ GtkRequisition req;
+ (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request )
+ (m_widget, &req );
+ m_width = req.width + m_xMargin;
+ m_height = req.height + 2*m_yMargin;