From: Julian Smart Date: Sat, 12 Feb 2005 12:31:02 +0000 (+0000) Subject: Patch by David Brinegar to fix menubar updating after modal dialog shown X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a2d3a3d1d38ef64050ddcd9b2754c855167aad1f?ds=inline Patch by David Brinegar to fix menubar updating after modal dialog shown 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 --- diff --git a/src/mac/carbon/menuitem.cpp b/src/mac/carbon/menuitem.cpp index 6974e7870c..ccfcf8da8d 100644 --- a/src/mac/carbon/menuitem.cpp +++ b/src/mac/carbon/menuitem.cpp @@ -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() ;