]> git.saurik.com Git - wxWidgets.git/commitdiff
Some menu things.
authorRobert Roebling <robert@roebling.de>
Wed, 3 Nov 1999 17:48:23 +0000 (17:48 +0000)
committerRobert Roebling <robert@roebling.de>
Wed, 3 Nov 1999 17:48:23 +0000 (17:48 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/menu/menu.cpp
src/common/menucmn.cpp
src/gtk/menu.cpp
src/gtk1/menu.cpp

index bcbc815d7011f3cd42d6979e5d896171a5bf6628..3dae64323a73cf154ee2a33c27f28bcc5fdc6533 100644 (file)
@@ -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());
 }
 
index 6c2e5631a7a6ac04300e6eb3b3d24b1cb5bca966..ae70495bef314c95c0129ab5eb9acb083525ea77 100644 (file)
@@ -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.
 }
 
 // ----------------------------------------------------------------------------
index 5ebd301230a7ad1b98cd99aa0cec43b87a65120a..66fc6d72fba6aff17c4a54ae4f2ebe2744d2c492 100644 (file)
@@ -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 = "<Branch>";
+        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 = "<CheckItem>";
         else
             entry.item_type = "<Item>";
+        entry.accelerator = (gchar*) NULL;
 
 #if wxUSE_ACCEL
         // due to an apparent bug in GTK+, we have to use a static buffer here -
index 5ebd301230a7ad1b98cd99aa0cec43b87a65120a..66fc6d72fba6aff17c4a54ae4f2ebe2744d2c492 100644 (file)
@@ -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 = "<Branch>";
+        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 = "<CheckItem>";
         else
             entry.item_type = "<Item>";
+        entry.accelerator = (gchar*) NULL;
 
 #if wxUSE_ACCEL
         // due to an apparent bug in GTK+, we have to use a static buffer here -