]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/menu.cpp
wxWindow::Freeze()/Thaw() can now be nested
[wxWidgets.git] / src / msw / menu.cpp
index 4be9908fccedcf4c06b49fccb594423e0bce1414..25ea2adc19173472c8f2543ccc05b423000df512 100644 (file)
@@ -73,7 +73,7 @@ extern wxMenu *wxCurrentPopupMenu;
 // ----------------------------------------------------------------------------
 
 // the (popup) menu title has this special id
-static const int idMenuTitle = -2;
+static const int idMenuTitle = -3;
 
 // ----------------------------------------------------------------------------
 // private functions
@@ -433,9 +433,9 @@ void wxMenu::EndRadioGroup()
     m_startRadioGroup = -1;
 }
 
-bool wxMenu::DoAppend(wxMenuItem *item)
+wxMenuItem* wxMenu::DoAppend(wxMenuItem *item)
 {
-    wxCHECK_MSG( item, FALSE, _T("NULL item in wxMenu::DoAppend") );
+    wxCHECK_MSG( item, NULL, _T("NULL item in wxMenu::DoAppend") );
 
     bool check = FALSE;
 
@@ -478,7 +478,7 @@ bool wxMenu::DoAppend(wxMenuItem *item)
 
     if ( !wxMenuBase::DoAppend(item) || !DoInsertOrAppend(item) )
     {
-        return FALSE;
+        return NULL;
     }
 
     if ( check )
@@ -487,12 +487,15 @@ bool wxMenu::DoAppend(wxMenuItem *item)
         item->Check(TRUE);
     }
 
-    return TRUE;
+    return item;
 }
 
-bool wxMenu::DoInsert(size_t pos, wxMenuItem *item)
+wxMenuItem* wxMenu::DoInsert(size_t pos, wxMenuItem *item)
 {
-    return wxMenuBase::DoInsert(pos, item) && DoInsertOrAppend(item, pos);
+    if (wxMenuBase::DoInsert(pos, item) && DoInsertOrAppend(item, pos))
+        return item;
+    else
+        return NULL;
 }
 
 wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
@@ -829,7 +832,13 @@ int wxMenuBar::MSWPositionForWxMenu(wxMenu *menu, int wxpos)
     wxASSERT(menu);
     wxASSERT(menu->GetHMenu());
     wxASSERT(m_hMenu);
+
+#if defined(__WXWINCE__)
+    int totalMSWItems = GetMenuCount();
+#else
     int totalMSWItems = GetMenuItemCount((HMENU)m_hMenu);
+#endif
+
     int i; // For old C++ compatibility
     for(i=wxpos; i<totalMSWItems; i++)
     {
@@ -977,7 +986,8 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
 {
     // Find out which MSW item before which we'll be inserting before
     // wxMenuBarBase::Insert is called and GetMenu(pos) is the new menu.
-    int mswpos = (pos == m_menus.GetCount())
+    // If IsAttached() is false this won't be used anyway
+    int mswpos = (!IsAttached() || (pos == m_menus.GetCount()))
         ?   -1 // append the menu
         :   MSWPositionForWxMenu(GetMenu(pos),pos);