X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5b0d48b32a24f32acca92a066407d4a697c16e18..7818b39874176b529be814fdfdfb773d8b211d3a:/src/common/menucmn.cpp diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index 65459efdd3..ff228f99dc 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -24,6 +24,8 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#include + #ifdef __BORLANDC__ #pragma hdrstop #endif @@ -125,7 +127,10 @@ void wxMenuBase::Init(long style) m_style = style; m_clientData = (void *)NULL; m_eventHandler = this; + +#if wxUSE_MENU_CALLBACK m_callback = (wxFunction) NULL; +#endif // wxUSE_MENU_CALLBACK } wxMenuBase::~wxMenuBase() @@ -150,10 +155,18 @@ bool wxMenuBase::DoAppend(wxMenuItem *item) bool wxMenuBase::Insert(size_t pos, wxMenuItem *item) { wxCHECK_MSG( item, FALSE, wxT("invalid item in wxMenu::Insert") ); - wxCHECK_MSG( pos < GetMenuItemCount(), FALSE, - wxT("invalid index in wxMenu::Insert") ); - return DoInsert(pos, item); + if ( pos == GetMenuItemCount() ) + { + return DoAppend(item); + } + else + { + wxCHECK_MSG( pos < GetMenuItemCount(), FALSE, + wxT("invalid index in wxMenu::Insert") ); + + return DoInsert(pos, item); + } } bool wxMenuBase::DoInsert(size_t pos, wxMenuItem *item) @@ -241,7 +254,7 @@ bool wxMenuBase::DoDestroy(wxMenuItem *item) // Finds the item id matching the given string, -1 if not found. int wxMenuBase::FindItem(const wxString& text) const { - wxString label = wxMenuItem(NULL, wxID_SEPARATOR, text).GetLabel(); + wxString label = wxMenuItem::GetLabelFromText(text); for ( wxMenuItemList::Node *node = m_items.GetFirst(); node; node = node->GetNext() ) @@ -484,16 +497,23 @@ bool wxMenuBarBase::Append(wxMenu *menu, const wxString& WXUNUSED(title)) } bool wxMenuBarBase::Insert(size_t pos, wxMenu *menu, - const wxString& WXUNUSED(title)) + const wxString& title) { - wxCHECK_MSG( menu, FALSE, wxT("can't insert NULL menu") ); + if ( pos == m_menus.GetCount() ) + { + return Append(menu, title); + } + else + { + wxCHECK_MSG( menu, FALSE, wxT("can't insert NULL menu") ); - wxMenuList::Node *node = m_menus.Item(pos); - wxCHECK_MSG( node, FALSE, wxT("bad index in wxMenuBar::Insert()") ); + wxMenuList::Node *node = m_menus.Item(pos); + wxCHECK_MSG( node, FALSE, wxT("bad index in wxMenuBar::Insert()") ); - m_menus.Insert(node, menu); + m_menus.Insert(node, menu); - return TRUE; + return TRUE; + } } wxMenu *wxMenuBarBase::Replace(size_t pos, wxMenu *menu,