]> git.saurik.com Git - wxWidgets.git/commitdiff
Patch by David Brinegar to fix menubar updating after modal dialog shown
authorJulian Smart <julian@anthemion.co.uk>
Sat, 12 Feb 2005 12:31:02 +0000 (12:31 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sat, 12 Feb 2005 12:31:02 +0000 (12:31 +0000)
See thread: [wx-dev] [wxMac] Menubar UI updates when launching from Finder

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31961 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/menuitem.cpp

index 6974e7870cb9c72d4207e6200ca7bb200ec3b597..ccfcf8da8ded0ac4e73e73e10fcd596bdf3067e3 100644 (file)
@@ -158,18 +158,18 @@ void wxMenuItem::UpdateItemText()
 
 void wxMenuItem::Enable(bool 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 (( m_isEnabled != bDoEnable
 #if TARGET_CARBON
-         || GetId() == wxApp::s_macPreferencesMenuItemId
-         || GetId() == wxApp::s_macExitMenuItemId
-         || GetId() == wxApp::s_macAboutMenuItemId
+      // avoid changing menuitem state when menu is disabled
+      // eg. BeginAppModalStateForWindow() will disable menus and ignore this change
+      // which in turn causes m_isEnabled to become out of sync with real menuitem state
+         && !(m_parentMenu && !IsMenuItemEnabled(MAC_WXHMENU(m_parentMenu->GetHMenu()), 0)) )
+      // always update builtin menuitems
+         || (   GetId() == wxApp::s_macPreferencesMenuItemId
+             || GetId() == wxApp::s_macExitMenuItemId
+             || GetId() == wxApp::s_macAboutMenuItemId
 #endif
-         ) 
+         ))
     {
         wxMenuItemBase::Enable( bDoEnable ) ;
         UpdateItemStatus() ;