]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed handling of the accelerators of menu items added to already attached submenus
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 16 Jul 2005 22:29:47 +0000 (22:29 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 16 Jul 2005 22:29:47 +0000 (22:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34869 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/msw/menu.cpp

index 396845dd5035a9176acd5e22c057e105cafd0d05..fa82b4feafcf6365fcf4e718dbd71ea07ec04a1a 100644 (file)
@@ -20,6 +20,7 @@ wxMSW:
 - Separators are now correctly shown in the toolbars under Windows XP
 - Fixed multiline tooltips handling.
 - Fixed wxSlider::GetSelEnd() (Atilim Cetin)
+- Fixed accelerators of menu items added to already attached submenus
 
 wxUniv:
 
index ddc8094612af2662ea4585d690e04e943d4996ed..23644015602f13cc7abc03879ad852d3279c3759 100644 (file)
@@ -305,6 +305,16 @@ void wxMenu::UpdateAccel(wxMenuItem *item)
     }
     else if ( !item->IsSeparator() )
     {
+        // recurse upwards: we should only modify m_accels of the top level
+        // menus, not of the submenus as wxMenuBar doesn't look at them
+        // (alternative and arguable cleaner solution would be to recurse
+        // downwards in GetAccelCount() and CopyAccels())
+        if ( GetParent() )
+        {
+            GetParent()->UpdateAccel(item);
+            return;
+        }
+
         // find the (new) accel for this item
         wxAcceleratorEntry *accel = wxGetAccelFromString(item->GetText());
         if ( accel )