git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49263
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// FIXME: is this right? somehow I don't think so (VZ)
#define gtk_accel_group_attach(g, o) gtk_window_add_accel_group((o), (g))
// FIXME: is this right? somehow I don't think so (VZ)
#define gtk_accel_group_attach(g, o) gtk_window_add_accel_group((o), (g))
-//#define gtk_accel_group_detach(g, o) gtk_window_remove_accel_group((o), (g))
+#define gtk_accel_group_detach(g, o) gtk_window_remove_accel_group((o), (g))
//#define gtk_menu_ensure_uline_accel_group(m) gtk_menu_get_accel_group(m)
#define ACCEL_OBJECT GtkWindow
//#define gtk_menu_ensure_uline_accel_group(m) gtk_menu_get_accel_group(m)
#define ACCEL_OBJECT GtkWindow
while (top_frame->GetParent() && !(top_frame->IsTopLevel()))
top_frame = top_frame->GetParent();
while (top_frame->GetParent() && !(top_frame->IsTopLevel()))
top_frame = top_frame->GetParent();
+ // support for native hot keys
+ ACCEL_OBJECT *obj = ACCEL_OBJ_CAST(top_frame->m_widget);
+ if ( menu->m_accel && g_slist_find( ACCEL_OBJECTS(menu->m_accel), obj ) )
+ gtk_accel_group_detach( menu->m_accel, obj );
+
wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst();
while (node)
{
wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst();
while (node)
{
if( frame )
frame->UpdateMenuBarSize();
if( frame )
frame->UpdateMenuBarSize();
+
+ wxMenubarUnsetInvokingWindow( menu, m_invokingWindow );
- WX_CLEAR_LIST(wxMenuItemList, m_items);
-
if ( GTK_IS_WIDGET( m_menu ))
{
// see wxMenu::Init
if ( GTK_IS_WIDGET( m_menu ))
{
// see wxMenu::Init
if ( m_owner )
gtk_widget_destroy( m_menu );
}
if ( m_owner )
gtk_widget_destroy( m_menu );
}
+
+ // This must come after we release GTK resources above. Otherwise, GTK will
+ // give warnings/errors when attempting to free accelerator resources from
+ // child items that just were destroyed (the m_menu widget can contain
+ // references to accelerators in child items. Problem detected when removing
+ // a menu from a wxMenuBar, and the removed menu had submenus with accelerators.)
+ WX_CLEAR_LIST(wxMenuItemList, m_items);
}
void wxMenu::SetLayoutDirection(const wxLayoutDirection dir)
}
void wxMenu::SetLayoutDirection(const wxLayoutDirection dir)