- /* 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;
-
-/*
- if (m_style & wxMENU_TEAROFF)
- entry.item_type = "<Tearoff>";
- else
-*/
- 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 = _T("<main>/");
- for ( const wxChar *pc = text; *pc != _T('\0'); pc++ )
+ /* 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) gtk_menu_clicked_callback;
+ entry.callback_action = 0;
+ if ( mitem->IsCheckable() )
+ entry.item_type = "<CheckItem>";
+ else
+ entry.item_type = "<Item>";
+ entry.accelerator = (gchar*) NULL;
+
+#if wxUSE_ACCEL
+ // due to an apparent bug in GTK+, we have to use a static buffer here -
+ // otherwise GTK+ 1.2.2 manages to override the memory we pass to it
+ // somehow! (VZ)
+ static char s_accel[32]; // must be big enough for <control><alt><shift>F12
+ strncpy(s_accel, GetHotKey(*mitem).mb_str(), WXSIZEOF(s_accel));
+ entry.accelerator = s_accel;
+#else // !wxUSE_ACCEL
+ entry.accelerator = (char*) NULL;
+#endif // wxUSE_ACCEL/!wxUSE_ACCEL
+
+ gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */
+
+ wxString path( mitem->GetFactoryPath() );
+ menuItem = gtk_item_factory_get_widget( m_factory, path.mb_str() );
+#else // GTK+ 1.0
+ menuItem = checkable ? gtk_check_menu_item_new_with_label( mitem->GetText().mb_str() )
+ : gtk_menu_item_new_with_label( mitem->GetText().mb_str() );
+
+ gtk_signal_connect( GTK_OBJECT(menuItem), "activate",
+ GTK_SIGNAL_FUNC(gtk_menu_clicked_callback),
+ (gpointer)this );
+#endif // GTK+ 1.2/1.0
+ }
+
+ if ( !mitem->IsSeparator() )