- return menu;
- }
-
- // shouldn't happen (FIXME but does now)
- wxFAIL_MSG( _T("gtk_item_factory_get_item() failed") );
-#else // GTK < 1.2
- // this should be very simple to implement
- wxFAIL_MSG( wxT("TODO") );
-#endif // GTK 1.2/1.0
-
- return NULL;
+ GtkMenuShell *menu_shell = GTK_MENU_SHELL(m_factory->widget);
+ printf( "factory entries before %d\n", (int)g_slist_length(m_factory->items) );
+ printf( "menu shell entries before %d\n", (int)g_list_length( menu_shell->children ) );
+
+ // unparent calls unref() and that would delete the widget so we raise
+ // the ref count to 2 artificially before invoking unparent.
+ gtk_widget_ref( menu->m_menu );
+ gtk_widget_unparent( menu->m_menu );
+
+ gtk_widget_destroy( menu->m_owner );
+
+ printf( "factory entries after %d\n", (int)g_slist_length(m_factory->items) );
+ printf( "menu shell entries after %d\n", (int)g_list_length( menu_shell->children ) );
+
+ return menu;