X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/937013e0fd914d4c42f9f5ec98da665986b93dfa..04d24675d3d26e9ae8af8b4bd390532d03adcbe1:/src/gtk/menu.cpp diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 71dc66a136..2e2e0fda3f 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -971,7 +971,8 @@ void wxMenu::Init() m_menu = gtk_menu_new(); // NB: keep reference to the menu so that it is not destroyed behind // our back by GTK+ e.g. when it is removed from menubar: - gtk_widget_ref(m_menu); + g_object_ref(m_menu); + gtk_object_sink(GTK_OBJECT(m_menu)); m_owner = (GtkWidget*) NULL; @@ -1000,7 +1001,7 @@ wxMenu::~wxMenu() if ( GTK_IS_WIDGET( m_menu )) { // see wxMenu::Init - gtk_widget_unref( m_menu ); + g_object_unref(m_menu); g_object_unref( m_accel ); // if the menu is inserted in another menu at this time, there was @@ -1008,13 +1009,6 @@ wxMenu::~wxMenu() 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) @@ -1054,6 +1048,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) if ( mitem->IsSeparator() ) { menuItem = gtk_separator_menu_item_new(); + m_prevRadio = NULL; } else if ( mitem->GetBitmap().Ok() || (mitem->GetKind() == wxITEM_NORMAL && isstock) )