X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03e11df5470fd64d9d9a669d0b50b84c2d714736..2cc78389312dce6285d0d6b6e891d24372252ada:/src/mac/menu.cpp diff --git a/src/mac/menu.cpp b/src/mac/menu.cpp index 9d308de120..d1d5a84771 100644 --- a/src/mac/menu.cpp +++ b/src/mac/menu.cpp @@ -56,7 +56,11 @@ const short kwxMacAppleMenuId = 1 ; // Construct a menu with optional title (then use append) +#ifdef __UNIX__ +short wxMenu::s_macNextMenuId = 3 ; +#else short wxMenu::s_macNextMenuId = 2 ; +#endif void wxMenu::Init() { @@ -136,7 +140,7 @@ void wxMenu::UpdateAccel(wxMenuItem *item) if ( accel ) m_accels[n] = accel; else - m_accels.Remove(n); + m_accels.RemoveAt(n); } if ( IsAttached() ) @@ -265,7 +269,7 @@ wxMenuItem *wxMenu::DoRemove(wxMenuItem *item) { delete m_accels[n]; - m_accels.Remove(n); + m_accels.RemoveAt(n); } //else: this item doesn't have an accel, nothing to do #endif // wxUSE_ACCEL @@ -343,22 +347,6 @@ bool wxMenu::ProcessCommand(wxCommandEvent & event) // other // --------------------------------------------------------------------------- -void wxMenu::Attach(wxMenuBar *menubar) -{ - // menu can be in at most one menubar because otherwise they would both - // delete the menu pointer - wxASSERT_MSG( !m_menuBar, wxT("menu belongs to 2 menubars, expect a crash") ); - - m_menuBar = menubar; -} - -void wxMenu::Detach() -{ - wxASSERT_MSG( m_menuBar, wxT("can't detach menu if it's not attached") ); - - m_menuBar = NULL; -} - wxWindow *wxMenu::GetWindow() const { if ( m_invokingWindow != NULL ) @@ -631,6 +619,9 @@ void wxMenuBar::RebuildAccelTable() void wxMenuBar::MacInstallMenuBar() { + if ( s_macInstalledMenuBar == this ) + return ; + Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ; wxString message ; wxCHECK_RET( menubar != NULL, "can't read MBAR resource" ); @@ -972,8 +963,6 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title) if ( !wxMenuBarBase::Append(menu, title) ) return FALSE; - menu->Attach(this); - m_titles.Add(title); if ( IsAttached() ) @@ -997,11 +986,14 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title) return TRUE; } -void wxMenuBar::Attach(wxFrame *frame) +void wxMenuBar::Detach() { -// wxASSERT_MSG( !IsAttached(), wxT("menubar already attached!") ); + wxMenuBarBase::Detach() ; +} - m_menuBarFrame = frame; +void wxMenuBar::Attach(wxFrame *frame) +{ + wxMenuBarBase::Attach( frame ) ; #if wxUSE_ACCEL RebuildAccelTable();