]> git.saurik.com Git - wxWidgets.git/commitdiff
menu fixes, also fixes #10479
authorStefan Csomor <csomor@advancedconcepts.ch>
Sun, 8 Feb 2009 11:49:46 +0000 (11:49 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sun, 8 Feb 2009 11:49:46 +0000 (11:49 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/menu.h
src/osx/menu_osx.cpp
src/osx/menuitem_osx.cpp

index ff8e0e06cfc9e57a51372f967d445da2927b2490..bac68f21b5e4d726f13fb8f1ae05b884e32e3655 100644 (file)
@@ -189,6 +189,7 @@ private:
     static wxMenuBar*            s_macCommonMenuBar ;
   
     wxMenu* m_rootMenu;
+    wxMenu* m_appleMenu;
 
     DECLARE_DYNAMIC_CLASS(wxMenuBar)
 };
index 281c0121db84c37502f38ab97bc39e981b3e1b31..91f2de1798452bf76c9e84fe83d39aecd1536a54 100644 (file)
@@ -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();
 
index a680ad71fc33aed8121371373b32d53576f1e6bb..a2b69f74423090d11862e40be05cadd1d2e69e35 100644 (file)
@@ -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;
 }