]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/menu.cpp
DeleteAllPages() bug corrected
[wxWidgets.git] / src / msw / menu.cpp
index 14d738290c645464be4f9df97ed000cea724110d..2e56379a77e7e1e2048108112852d6dfba93b71a 100644 (file)
@@ -442,12 +442,14 @@ void wxMenu::ProcessCommand(wxCommandEvent & event)
 {
     bool processed = FALSE;
 
+#if WXWIN_COMPATIBILITY
     // Try a callback
     if (m_callback)
     {
         (void)(*(m_callback))(*this, event);
         processed = TRUE;
     }
+#endif // WXWIN_COMPATIBILITY
 
     // Try the menu's event handler
     if ( !processed && GetEventHandler())
@@ -469,7 +471,6 @@ void wxMenu::ProcessCommand(wxCommandEvent & event)
 // Finds the item id matching the given string, -1 if not found.
 int wxMenu::FindItem (const wxString& itemString) const
 {
-    // FIXME fixed size buffer
     wxString itemLabel = wxStripMenuCodes(itemString);
     for ( wxNode *node = m_menuItems.First(); node; node = node->Next() )
     {
@@ -497,7 +498,7 @@ wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const
         *itemMenu = NULL;
 
     wxMenuItem *item = NULL;
-    for ( wxNode *node = m_menuItems.First(); node; node = node->Next() )
+    for ( wxNode *node = m_menuItems.First(); node && !item; node = node->Next() )
     {
         item = (wxMenuItem *)node->Data();
 
@@ -505,13 +506,15 @@ wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const
         {
             if (itemMenu)
                 *itemMenu = (wxMenu *)this;
-            break;
         }
         else if ( item->IsSubMenu() )
         {
             item = item->GetSubMenu()->FindItemForId(itemId, itemMenu);
-            if ( item )
-                break;
+        }
+        else
+        {
+            // don't exit the loop
+            item = NULL;
         }
     }