if ( !GtkAppend(menu, title) )
return FALSE;
+ if (pos+1 >= m_menus.GetCount())
+ return TRUE;
+
GtkMenuShell *menu_shell = GTK_MENU_SHELL(m_factory->widget);
gpointer data = g_list_last(menu_shell->children)->data;
menu_shell->children = g_list_remove(menu_shell->children, data);
wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title)
{
- if ( !wxMenuBarBase::Replace(pos, menu, title) )
- return (wxMenu*) NULL;
-
// remove the old item and insert a new one
wxMenu *menuOld = Remove(pos);
if ( menuOld && !Insert(pos, menu, title) )
#if (GTK_MINOR_VERSION > 0)
for ( const wxChar *pc = text.c_str(); *pc; pc++ )
{
- if ( *pc == wxT('_') )
+ if ( *pc == wxT('_') || *pc == wxT('&') )
{
- // this is the escape character for GTK+ - skip it
+ // '_' is the escape character for GTK+ and '&' is the one for
+ // wxWindows - skip both of them
continue;
}
#endif // GTK 1.2/1.0
gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), mitem->GetSubMenu()->m_menu );
+
+ // if adding a submenu to a menu already existing in the menu bar, we
+ // must set invoking window to allow processing events from this
+ // submenu
+ if ( m_invokingWindow )
+ wxMenubarSetInvokingWindow(mitem->GetSubMenu(), m_invokingWindow);
}
else // a normal item
{