+void wxTaskBarIcon::Private::SetIcon()
+{
+#if GTK_CHECK_VERSION(2,10,0)
+ if (GTK_CHECK_VERSION(3,0,0) || gtk_check_version(2,10,0) == NULL)
+ {
+ if (m_statusIcon)
+ gtk_status_icon_set_from_pixbuf(m_statusIcon, m_bitmap.GetPixbuf());
+ else
+ {
+ m_statusIcon = gtk_status_icon_new_from_pixbuf(m_bitmap.GetPixbuf());
+ g_signal_connect(m_statusIcon, "activate",
+ G_CALLBACK(icon_activate), m_taskBarIcon);
+ g_signal_connect(m_statusIcon, "popup_menu",
+ G_CALLBACK(status_icon_popup_menu), m_taskBarIcon);
+ }
+ }
+ else
+#endif
+ {
+#ifndef __WXGTK3__
+ m_size = 0;
+ if (m_eggTrayIcon)
+ {
+ GtkWidget* image = gtk_bin_get_child(GTK_BIN(m_eggTrayIcon));
+ gtk_image_set_from_pixbuf(GTK_IMAGE(image), m_bitmap.GetPixbuf());
+ }
+ else
+ {
+ m_eggTrayIcon = GTK_WIDGET(egg_tray_icon_new("wxTaskBarIcon"));
+ gtk_widget_add_events(m_eggTrayIcon, GDK_BUTTON_PRESS_MASK);
+ g_signal_connect(m_eggTrayIcon, "size_allocate",
+ G_CALLBACK(icon_size_allocate), this);
+ g_signal_connect(m_eggTrayIcon, "destroy",
+ G_CALLBACK(icon_destroy), this);
+ g_signal_connect(m_eggTrayIcon, "button_press_event",
+ G_CALLBACK(icon_button_press_event), m_taskBarIcon);
+ g_signal_connect(m_eggTrayIcon, "popup_menu",
+ G_CALLBACK(icon_popup_menu), m_taskBarIcon);
+ GtkWidget* image = gtk_image_new_from_pixbuf(m_bitmap.GetPixbuf());
+ gtk_container_add(GTK_CONTAINER(m_eggTrayIcon), image);
+ gtk_widget_show_all(m_eggTrayIcon);
+ }
+#endif
+ }
+#if wxUSE_TOOLTIPS
+ const char *tip_text = NULL;
+ if (!m_tipText.empty())
+ tip_text = m_tipText.utf8_str();