X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a583e623c09879180952d18e865ec3373e69e1c7..300b1288331acc7ac3482595bb226a52f8aec238:/src/common/menucmn.cpp diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index ae70495bef..74818ae0a9 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -125,6 +125,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() @@ -149,10 +153,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) @@ -483,16 +495,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,