From a583e623c09879180952d18e865ec3373e69e1c7 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Wed, 3 Nov 1999 17:48:23 +0000 Subject: [PATCH] Some menu things. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/menu/menu.cpp | 5 +++-- src/common/menucmn.cpp | 6 ++++-- src/gtk/menu.cpp | 6 ++++-- src/gtk1/menu.cpp | 6 ++++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/samples/menu/menu.cpp b/samples/menu/menu.cpp index bcbc815d70..3dae64323a 100644 --- a/samples/menu/menu.cpp +++ b/samples/menu/menu.cpp @@ -391,9 +391,10 @@ void MyFrame::OnAppendMenuItem(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAppendSubMenu(wxCommandEvent& WXUNUSED(event)) { wxMenuBar *menubar = GetMenuBar(); + wxMenu *menu = menubar->GetMenu(menubar->GetMenuCount() - 1); - - menu->Append(Menu_Dummy_Last, "Dummy sub menu\tCtrl-F12", + + menu->Append(Menu_Dummy_Last, "Dummy sub menu\tCtrl-F2", CreateDummyMenu()); } diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index 6c2e5631a7..ae70495bef 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -51,7 +51,8 @@ WX_DEFINE_LIST(wxMenuItemList); wxMenuItemBase::~wxMenuItemBase() { - delete m_subMenu; + if (m_subMenu) + delete m_subMenu; } #if wxUSE_ACCEL @@ -128,7 +129,8 @@ void wxMenuBase::Init(long style) wxMenuBase::~wxMenuBase() { - // nothing to do, wxMenuItemList dtor will delete the menu items + // nothing to do, wxMenuItemList dtor will delete the menu items. + // Actually, in GTK, the submenus have to get deleted first. } // ---------------------------------------------------------------------------- diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 5ebd301230..66fc6d72fb 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -757,11 +757,11 @@ void wxMenu::Init() wxMenu::~wxMenu() { + m_items.Clear(); + gtk_widget_destroy( m_menu ); gtk_object_unref( GTK_OBJECT(m_factory) ); - - // the menu items are deleted by the base class dtor } bool wxMenu::DoAppend(wxMenuItem *mitem) @@ -802,6 +802,7 @@ bool wxMenu::DoAppend(wxMenuItem *mitem) entry.callback = (GtkItemFactoryCallback) 0; entry.callback_action = 0; entry.item_type = ""; + entry.accelerator = (gchar*) NULL; gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */ @@ -832,6 +833,7 @@ bool wxMenu::DoAppend(wxMenuItem *mitem) entry.item_type = ""; else entry.item_type = ""; + entry.accelerator = (gchar*) NULL; #if wxUSE_ACCEL // due to an apparent bug in GTK+, we have to use a static buffer here - diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp index 5ebd301230..66fc6d72fb 100644 --- a/src/gtk1/menu.cpp +++ b/src/gtk1/menu.cpp @@ -757,11 +757,11 @@ void wxMenu::Init() wxMenu::~wxMenu() { + m_items.Clear(); + gtk_widget_destroy( m_menu ); gtk_object_unref( GTK_OBJECT(m_factory) ); - - // the menu items are deleted by the base class dtor } bool wxMenu::DoAppend(wxMenuItem *mitem) @@ -802,6 +802,7 @@ bool wxMenu::DoAppend(wxMenuItem *mitem) entry.callback = (GtkItemFactoryCallback) 0; entry.callback_action = 0; entry.item_type = ""; + entry.accelerator = (gchar*) NULL; gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */ @@ -832,6 +833,7 @@ bool wxMenu::DoAppend(wxMenuItem *mitem) entry.item_type = ""; else entry.item_type = ""; + entry.accelerator = (gchar*) NULL; #if wxUSE_ACCEL // due to an apparent bug in GTK+, we have to use a static buffer here - -- 2.45.2