wxMenu *pSubMenu)
: wxMenuItemBase(pParentMenu, id, text, strHelp, kind, pSubMenu)
{
+ // TO DISCUSS on dev : whether we can veto id 0
+ // wxASSERT_MSG( id != 0 || pSubMenu != NULL , wxT("A MenuItem ID of Zero does not work under Mac") ) ;
+
// In other languages there is no difference in naming the Exit/Quit menu item between MacOS and Windows guidelines
// therefore these item must not be translated
if ( wxStripMenuCodes(m_text).Upper() == wxT("EXIT") )
if ( !m_parentMenu )
return ;
- MenuHandle mhandle = MAC_WXHMENU(m_parentMenu->GetHMenu()) ;
- MenuItemIndex index = m_parentMenu->MacGetIndexFromItem( this ) ;
- if( mhandle == NULL || index == 0)
- return ;
-
- UMAEnableMenuItem( mhandle , index , m_isEnabled ) ;
- if ( IsCheckable() && IsChecked() )
- ::SetItemMark( mhandle , index , 0x12 ) ; // checkmark
- else
- ::SetItemMark( mhandle , index , 0 ) ; // no mark
+#if TARGET_CARBON
+ if ( UMAGetSystemVersion() >= 0x1000 && GetId() == wxApp::s_macPreferencesMenuItemId)
+ {
+ if ( !IsEnabled() )
+ DisableMenuCommand( NULL , kHICommandPreferences ) ;
+ else
+ EnableMenuCommand( NULL , kHICommandPreferences ) ;
+ }
+ if ( UMAGetSystemVersion() >= 0x1000 && GetId() == wxApp::s_macExitMenuItemId)
+ {
+ if ( !IsEnabled() )
+ DisableMenuCommand( NULL , kHICommandQuit ) ;
+ else
+ EnableMenuCommand( NULL , kHICommandQuit ) ;
+ }
+#endif
+ {
+ MenuHandle mhandle = MAC_WXHMENU(m_parentMenu->GetHMenu()) ;
+ MenuItemIndex index = m_parentMenu->MacGetIndexFromItem( this ) ;
+ if( mhandle == NULL || index == 0)
+ return ;
+
+ UMAEnableMenuItem( mhandle , index , m_isEnabled ) ;
+ if ( IsCheckable() && IsChecked() )
+ ::SetItemMark( mhandle , index , 0x12 ) ; // checkmark
+ else
+ ::SetItemMark( mhandle , index , 0 ) ; // no mark
- UMASetMenuItemText( mhandle , index , m_text ) ;
- wxAcceleratorEntry *entry = wxGetAccelFromString( m_text ) ;
- UMASetMenuItemShortcut( mhandle , index , entry ) ;
- delete entry ;
+ UMASetMenuItemText( mhandle , index , m_text ) ;
+ wxAcceleratorEntry *entry = wxGetAccelFromString( m_text ) ;
+ UMASetMenuItemShortcut( mhandle , index , entry ) ;
+ delete entry ;
+ }
}
void wxMenuItem::UpdateItemText()