+ (gpointer)this );
+
+ gtk_signal_connect( GTK_OBJECT(menuItem), "deselect",
+ GTK_SIGNAL_FUNC(gtk_menu_nolight_callback),
+ (gpointer)this );
+
+ mitem->SetMenuItem(menuItem);
+
+ m_items.Append( mitem );
+}
+
+void wxMenu::Append( int id, const wxString &item, wxMenu *subMenu, const wxString &helpStr )
+{
+ wxMenuItem *mitem = new wxMenuItem(this, id, item, helpStr, FALSE, subMenu);
+
+#if (GTK_MINOR_VERSION > 0)
+ /* text has "_" instead of "&" after mitem->SetText() */
+ wxString text( mitem->GetText() );
+
+ /* local buffer in multibyte form */
+ char buf[200];
+ strcpy( buf, "/" );
+ strcat( buf, text.mb_str() );
+
+ GtkItemFactoryEntry entry;
+ entry.path = buf;
+ entry.callback = (GtkItemFactoryCallback) 0;
+ entry.callback_action = 0;
+ entry.item_type = "<Branch>";
+
+ gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */
+
+ /* in order to get the pointer to the item we need the item text _without_ underscores */
+ wxString s = wxT("<main>/");
+ for ( const wxChar *pc = text; *pc != wxT('\0'); pc++ )
+ {
+ if (*pc == wxT('_')) pc++; /* skip it */
+ s << *pc;
+ }
+
+ GtkWidget *menuItem = gtk_item_factory_get_item( m_factory, s.mb_str() );
+
+#else
+
+ GtkWidget *menuItem = gtk_menu_item_new_with_label(mitem->GetText().mbc_str());