From 1ea5ef0190b1b2f4d248af6b06d718a9adef2d41 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sun, 8 Feb 2009 11:49:46 +0000 Subject: [PATCH] menu fixes, also fixes #10479 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/menu.h | 1 + src/osx/menu_osx.cpp | 24 ++++++++++++++---------- src/osx/menuitem_osx.cpp | 3 ++- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/include/wx/osx/menu.h b/include/wx/osx/menu.h index ff8e0e06cf..bac68f21b5 100644 --- a/include/wx/osx/menu.h +++ b/include/wx/osx/menu.h @@ -189,6 +189,7 @@ private: static wxMenuBar* s_macCommonMenuBar ; wxMenu* m_rootMenu; + wxMenu* m_appleMenu; DECLARE_DYNAMIC_CLASS(wxMenuBar) }; diff --git a/src/osx/menu_osx.cpp b/src/osx/menu_osx.cpp index 281c0121db..91f2de1798 100644 --- a/src/osx/menu_osx.cpp +++ b/src/osx/menu_osx.cpp @@ -503,18 +503,17 @@ void wxMenuBar::Init() m_menuBarFrame = NULL; m_invokingWindow = NULL; m_rootMenu = new wxMenu(); - wxMenu* applemenu = new wxMenu(); - applemenu->SetAllowRearrange(false); - applemenu->Append( wxApp::s_macAboutMenuItemId, "About..." ); - applemenu->AppendSeparator(); - applemenu->Append( wxApp::s_macPreferencesMenuItemId, "Preferences..." ); - applemenu->AppendSeparator(); - -#if ! wxOSX_USE_CARBON - applemenu->Append( wxApp::s_macExitMenuItemId, "Quit\tCtrl+Q" ); + m_appleMenu = new wxMenu(); + m_appleMenu->SetAllowRearrange(false); + m_appleMenu->Append( wxApp::s_macAboutMenuItemId, "About..." ); + m_appleMenu->AppendSeparator(); +#if !wxOSX_USE_CARBON + m_appleMenu->Append( wxApp::s_macPreferencesMenuItemId, "Preferences..." ); + m_appleMenu->AppendSeparator(); + m_appleMenu->Append( wxApp::s_macExitMenuItemId, "Quit\tCtrl+Q" ); #endif - m_rootMenu->AppendSubMenu(applemenu, "\x14") ; + m_rootMenu->AppendSubMenu(m_appleMenu, "\x14") ; } wxMenuBar::wxMenuBar() @@ -565,6 +564,7 @@ void wxMenuBar::MacInstallMenuBar() return ; m_rootMenu->GetPeer()->MakeRoot(); + // DisableMenuCommand( NULL , kHICommandPreferences ) ; #if 0 MenuBarHandle menubar = NULL ; @@ -922,6 +922,8 @@ static void wxMenubarSetInvokingWindow( wxMenu *menu, wxWindow *win ) void wxMenuBar::UnsetInvokingWindow() { m_invokingWindow = NULL; + wxMenubarUnsetInvokingWindow(m_appleMenu); + wxMenu *menu; wxMenuList::compatibility_iterator node = m_menus.GetFirst(); @@ -937,6 +939,8 @@ void wxMenuBar::UnsetInvokingWindow() void wxMenuBar::SetInvokingWindow(wxFrame *frame) { m_invokingWindow = frame; + wxMenubarSetInvokingWindow(m_appleMenu, frame); + wxMenu *menu; wxMenuList::compatibility_iterator node = m_menus.GetFirst(); diff --git a/src/osx/menuitem_osx.cpp b/src/osx/menuitem_osx.cpp index a680ad71fc..a2b69f7442 100644 --- a/src/osx/menuitem_osx.cpp +++ b/src/osx/menuitem_osx.cpp @@ -55,7 +55,8 @@ wxMenuItem::wxMenuItem(wxMenu *pParentMenu, } wxAcceleratorEntry *entry = wxAcceleratorEntry::Create( m_text ) ; - m_peer = wxMenuItemImpl::Create( this, pParentMenu, id, text, entry, strHelp, kind, pSubMenu ); + // use accessors for ID and Kind because they might have been changed in the base constructor + m_peer = wxMenuItemImpl::Create( this, pParentMenu, GetId(), text, entry, strHelp, GetKind(), pSubMenu ); delete entry; } -- 2.45.2