From dbdf9a176f4239d8204cef176fd9780530ba9302 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Tue, 30 Mar 2004 00:49:21 +0000 Subject: [PATCH] wxMenuBase changes: 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 | 6 +++--- src/common/menucmn.cpp | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/wx/menu.h b/include/wx/menu.h index bd0fef2289..f23b6ac400 100644 --- a/include/wx/menu.h +++ b/include/wx/menu.h @@ -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; } diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index bf618f7939..b272d1483d 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -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!