]> git.saurik.com Git - wxWidgets.git/commitdiff
wxMenuBase changes:
authorDavid Elliott <dfe@tgwbd.org>
Tue, 30 Mar 2004 00:49:21 +0000 (00:49 +0000)
committerDavid Elliott <dfe@tgwbd.org>
Tue, 30 Mar 2004 00:49:21 +0000 (00:49 +0000)
1. GetMenuBar() tries GetParent()->GetMenuBar() first (traverse up hierarchy).
2. IsAttached() returns true if GetMenuBar() returns a menubar.
3. AddSubMenu() does not call Attach() on added submenus.

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

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

index bd0fef2289d4610d7e1deb868e1e061c67bce4d6..f23b6ac400d5f06e9df868b65faac04c4f5f86a1 100644 (file)
@@ -272,15 +272,15 @@ public:
     void UpdateUI(wxEvtHandler* source = (wxEvtHandler*)NULL);
 
     // get the menu bar this menu is attached to (may be NULL, always NULL for
-    // popup menus)
-    wxMenuBar *GetMenuBar() const { return m_menuBar; }
+    // popup menus).  Traverse up the menu hierarchy to find it.
+    wxMenuBar *GetMenuBar() const;
 
     // called when the menu is attached/detached to/from a menu bar
     virtual void Attach(wxMenuBarBase *menubar);
     virtual void Detach();
 
     // is the menu attached to a menu bar (or is it a popup one)?
-    bool IsAttached() const { return m_menuBar != NULL; }
+    bool IsAttached() const { return GetMenuBar() != NULL; }
 
     // set/get the parent of this menu
     void SetParent(wxMenu *parent) { m_menuParent = parent; }
index bf618f79399f2cc13c553ba96875d2d639dc6edf..b272d1483d48b7c3eef1bf35785e176375520187 100644 (file)
@@ -310,11 +310,6 @@ void wxMenuBase::AddSubMenu(wxMenu *submenu)
 {
     wxCHECK_RET( submenu, _T("can't add a NULL submenu") );
 
-    if ( m_menuBar )
-    {
-        submenu->Attach(m_menuBar);
-    }
-
     submenu->SetParent((wxMenu *)this);
 }
 
@@ -629,6 +624,13 @@ bool wxMenuBase::SendEvent(int id, int checked)
 // wxMenu attaching/detaching to/from menu bar
 // ----------------------------------------------------------------------------
 
+wxMenuBar* wxMenuBase::GetMenuBar() const
+{
+    if(GetParent())
+        return GetParent()->GetMenuBar();
+    return m_menuBar;
+}
+
 void wxMenuBase::Attach(wxMenuBarBase *menubar)
 {
     // use Detach() instead!