- GtkToolbarChildType ctype = GTK_TOOLBAR_CHILD_BUTTON;
- if (toggle) ctype = GTK_TOOLBAR_CHILD_TOGGLEBUTTON;
-
- gtk_toolbar_append_element( m_toolbar,
- ctype, NULL, NULL, helpString1, "", tool_pixmap, (GtkSignalFunc)gtk_toolbar_callback, (gpointer)tool );
+ GtkToolbarChildType ctype = toggle ? GTK_TOOLBAR_CHILD_TOGGLEBUTTON
+ : GTK_TOOLBAR_CHILD_BUTTON;
+
+ GtkWidget *item = gtk_toolbar_append_element
+ (
+ GTK_TOOLBAR(m_toolbar),
+ ctype,
+ (GtkWidget *)NULL,
+ (const char *)NULL,
+ helpString1,
+ "",
+ tool_pixmap,
+ (GtkSignalFunc)gtk_toolbar_callback,
+ (gpointer)tool
+ );
+
+ // VZ: we don't want GDK_NO_EXPOSE events because for some reason our
+ // toolbar buttons get them (it doesn't happen in a standalone GTK+ program
+ // for unknown reasons) and it prevents tooltips from appearing.
+ gtk_widget_set_events( GTK_WIDGET(item),
+ gtk_widget_get_events( GTK_WIDGET(item) ) &
+ ~GDK_EXPOSURE_MASK);
+ tool->m_item = item;
+
+ gtk_signal_connect( GTK_OBJECT(tool->m_item),
+ "enter_notify_event",
+ GTK_SIGNAL_FUNC(gtk_toolbar_enter_callback),
+ (gpointer)tool );