]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/menu.cpp
VC++ /Wp64 warning fixes
[wxWidgets.git] / src / msw / menu.cpp
index 4880a3807bac0b5766c70a2eaa9a21e36c9cefbd..23644015602f13cc7abc03879ad852d3279c3759 100644 (file)
@@ -89,7 +89,8 @@ static const int idMenuTitle = -3;
 // ----------------------------------------------------------------------------
 
 // make the given menu item default
 // ----------------------------------------------------------------------------
 
 // make the given menu item default
-static void SetDefaultMenuItem(HMENU hmenu, UINT id)
+static void SetDefaultMenuItem(HMENU WXUNUSED_IN_WINCE(hmenu),
+                               UINT WXUNUSED_IN_WINCE(id))
 {
 #ifndef __WXWINCE__
     MENUITEMINFO mii;
 {
 #ifndef __WXWINCE__
     MENUITEMINFO mii;
@@ -102,9 +103,6 @@ static void SetDefaultMenuItem(HMENU hmenu, UINT id)
     {
         wxLogLastError(wxT("SetMenuItemInfo"));
     }
     {
         wxLogLastError(wxT("SetMenuItemInfo"));
     }
-#else
-    wxUnusedVar(hmenu);
-    wxUnusedVar(id);
 #endif
 }
 
 #endif
 }
 
@@ -307,6 +305,16 @@ void wxMenu::UpdateAccel(wxMenuItem *item)
     }
     else if ( !item->IsSeparator() )
     {
     }
     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 )
         // find the (new) accel for this item
         wxAcceleratorEntry *accel = wxGetAccelFromString(item->GetText());
         if ( accel )
@@ -385,10 +393,15 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
     LPCTSTR pData = NULL;
     if ( pos == (size_t)-1 )
     {
     LPCTSTR pData = NULL;
     if ( pos == (size_t)-1 )
     {
-        // append at the end
-        pos = ::GetMenuItemCount(GetHmenu());
+        // append at the end (note that the item is already appended to
+        // internal data structures)
+        pos = GetMenuItemCount() - 1;
     }
 
     }
 
+    // adjust position to account for the title, if any
+    if ( !m_title.empty() )
+        pos += 2; // for the title itself and its separator
+
     BOOL ok = false;
 
     // check if we have something more than a simple text item
     BOOL ok = false;
 
     // check if we have something more than a simple text item