]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed the checked flag value for events from check items in popup menus (patch 107901...
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 31 Jan 2005 15:11:10 +0000 (15:11 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 31 Jan 2005 15:11:10 +0000 (15:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31671 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/menu.cpp

index d9f510cb85108e456507b8f684df149b4ca22543..3b1499ce24a61240707b706d863d6ea089902abf 100644 (file)
@@ -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;