// headers & declarations
// ============================================================================
+#include "wx/wxprec.h"
+
#include "wx/app.h"
#include "wx/menu.h"
#include "wx/menuitem.h"
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") ) ;
+ 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
void wxMenuItem::Enable(bool bDoEnable)
{
- if ( m_isEnabled != bDoEnable )
+ // Due to desychronisation of m_isEnabled from the
+ // true state after a modal dialog is shown in OnInit,
+ // and subsequent enabling of menu items that should be
+ // disabled, we now always update the item's status.
+
+ if ( /* m_isEnabled != bDoEnable */ true
+#if TARGET_CARBON
+ || GetId() == wxApp::s_macPreferencesMenuItemId
+ || GetId() == wxApp::s_macExitMenuItemId
+ || GetId() == wxApp::s_macAboutMenuItemId
+#endif
+ )
{
wxMenuItemBase::Enable( bDoEnable ) ;
UpdateItemStatus() ;
}
// also uncheck all the other items in this radio group
- wxMenuItemList::Node *node = items.Item(start);
+ wxMenuItemList::compatibility_iterator node = items.Item(start);
for ( int n = start; n <= end && node; n++ )
{
if ( n != pos )