X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/598ddd96f45745188c96f16757f7ceeaa0c8d70d..c5fe22f8f43dfb5cca0c09f639a8eafe314ae809:/src/msw/menu.cpp diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp index d9f510cb85..3b1499ce24 100644 --- a/src/msw/menu.cpp +++ b/src/msw/menu.cpp @@ -642,16 +642,12 @@ void wxMenu::SetTitle(const wxString& label) bool wxMenu::MSWCommand(WXUINT WXUNUSED(param), WXWORD id) { // ignore commands from the menu title - - // NB: VC++ generates wrong assembler for `if ( id != idMenuTitle )'!! if ( id != (WXWORD)idMenuTitle ) { - // VZ: previosuly, the command int was set to id too which was quite - // useless anyhow (as it could be retrieved using GetId()) and - // uncompatible with wxGTK, so now we use the command int instead - // to pass the checked status - UINT menuState = ::GetMenuState(GetHmenu(), id, MF_BYCOMMAND) ; - SendEvent(id, menuState & MF_CHECKED); + // get the checked status of the command: notice that menuState is the + // old state of the menu, so the test for MF_CHECKED must be inversed + UINT menuState = ::GetMenuState(GetHmenu(), id, MF_BYCOMMAND); + SendEvent(id, !(menuState & MF_CHECKED)); } return true;