]> git.saurik.com Git - wxWidgets.git/commitdiff
Ensure that a wxMenuItem's parent menu is updated if it is removed
authorRobin Dunn <robin@alldunn.com>
Tue, 10 Jun 2003 23:48:46 +0000 (23:48 +0000)
committerRobin Dunn <robin@alldunn.com>
Tue, 10 Jun 2003 23:48:46 +0000 (23:48 +0000)
from one and added to another menu.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21027 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/menuitem.h
src/common/menucmn.cpp

index 48e98922be3df44df32f3f1e8198123de4ca72c5..f7f5cc3c7230c220b8a6070b2525753d73e043c7 100644 (file)
@@ -49,6 +49,7 @@ public:
 
     // the menu we're in
     wxMenu *GetMenu() const { return m_parentMenu; }
+    void SetMenu(wxMenu* menu) { m_parentMenu = menu; }
 
     // get/set id
     void SetId(int itemid) { m_id = itemid; }
index 8d8f61d80dadab0203784a4a1995ae57afd685af..7ce3d36fdea66a15aac5887ccb05b824472ff37b 100644 (file)
@@ -319,6 +319,7 @@ bool wxMenuBase::DoAppend(wxMenuItem *item)
     wxCHECK_MSG( item, FALSE, wxT("invalid item in wxMenu::Append()") );
 
     m_items.Append(item);
+    item->SetMenu((wxMenu*)this);
     if ( item->IsSubMenu() )
     {
         AddSubMenu(item->GetSubMenu());
@@ -352,6 +353,7 @@ bool wxMenuBase::DoInsert(size_t pos, wxMenuItem *item)
     wxCHECK_MSG( node, FALSE, wxT("invalid index in wxMenu::Insert()") );
 
     m_items.Insert(node, item);
+    item->SetMenu((wxMenu*)this);
     if ( item->IsSubMenu() )
     {
         AddSubMenu(item->GetSubMenu());
@@ -380,6 +382,7 @@ wxMenuItem *wxMenuBase::DoRemove(wxMenuItem *item)
     m_items.DeleteNode(node);
 
     // item isn't attached to anything any more
+    item->SetMenu((wxMenu *)NULL);
     wxMenu *submenu = item->GetSubMenu();
     if ( submenu )
     {