]> git.saurik.com Git - wxWidgets.git/commitdiff
converting menu ids and safeguarding against missing menu items
authorStefan Csomor <csomor@advancedconcepts.ch>
Sat, 28 Jan 2006 12:28:56 +0000 (12:28 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sat, 28 Jan 2006 12:28:56 +0000 (12:28 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/window.cpp

index 7f282379cbceae4db3978df0a145f2b2fb7a82c6..3dc206ee7ad01bc24d06a8339cc11006cee435ba 100644 (file)
@@ -1665,15 +1665,19 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
     long menuResult = ::PopUpMenuSelect((MenuHandle) menu->GetHMenu() , y, x, 0) ;
     if ( HiWord(menuResult) != 0 )
     {
-        MenuCommand id ;
-        GetMenuItemCommandID( GetMenuHandle(HiWord(menuResult)) , LoWord(menuResult) , &id ) ;
-        wxMenuItem* item = NULL ;
+        MenuCommand macid;
+        GetMenuItemCommandID( GetMenuHandle(HiWord(menuResult)) , LoWord(menuResult) , &macid );
+        int id = wxMacCommandToId( macid ); 
+        wxMenuItem* item = NULL ; 
         wxMenu* realmenu ;
         item = menu->FindItem( id, &realmenu ) ;
-        if (item->IsCheckable())
-            item->Check( !item->IsChecked() ) ;
+        if ( item )
+        {
+            if (item->IsCheckable())
+                item->Check( !item->IsChecked() ) ;
 
-        menu->SendEvent( id , item->IsCheckable() ? item->IsChecked() : -1 ) ;
+            menu->SendEvent( id , item->IsCheckable() ? item->IsChecked() : -1 ) ;
+        }
     }
 
     menu->MacAfterDisplay( true ) ;