]> git.saurik.com Git - wxWidgets.git/commitdiff
bug in FindItemForId() fixed (?)
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 6 Apr 1999 08:50:10 +0000 (08:50 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 6 Apr 1999 08:50:10 +0000 (08:50 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2048 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/menu.cpp

index 14d738290c645464be4f9df97ed000cea724110d..097765df9d804a979dd3b2e2d4ecef39af8dee53 100644 (file)
@@ -469,7 +469,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 +496,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 +504,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;
         }
     }