X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6feb95a79834836e88143b15d9f424ebe79621..15b41e900b5bb946cc885b87ed0edd8f745bf22a:/src/common/menucmn.cpp diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index b9ecb0cf07..05bb4f7f8c 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -55,6 +55,25 @@ WX_DEFINE_LIST(wxMenuItemList); // wxMenuItem // ---------------------------------------------------------------------------- +wxMenuItemBase::wxMenuItemBase(wxMenu *parentMenu, + int id, + const wxString& text, + const wxString& help, + wxItemKind kind, + wxMenu *subMenu) + : m_text(text), + m_help(help) +{ + wxASSERT_MSG( parentMenu != NULL, wxT("menuitem should have a menu") ); + + m_parentMenu = parentMenu; + m_subMenu = subMenu; + m_isEnabled = TRUE; + m_isChecked = FALSE; + m_id = id; + m_kind = kind; +} + wxMenuItemBase::~wxMenuItemBase() { delete m_subMenu; @@ -82,11 +101,25 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label) else if ( current == _("shift") ) accelFlags |= wxACCEL_SHIFT; else { - wxLogDebug(wxT("Unknown accel modifier: '%s'"), - current.c_str()); + // we may have "Ctrl-+", for example, but we still want to + // catch typos like "Crtl-A" so only give the warning if we + // have something before the current '+' or '-', else take + // it as a literal symbol + if ( current.empty() ) + { + current += label[n]; + + // skip clearing it below + continue; + } + else + { + wxLogDebug(wxT("Unknown accel modifier: '%s'"), + current.c_str()); + } } - current.Empty(); + current.clear(); } else { current += wxTolower(label[n]); @@ -126,14 +159,39 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label) else if ( current == wxT("INSERT") ) { keyCode = WXK_INSERT; } -#if 0 + else if ( current == wxT("ENTER") || current == wxT("RETURN") ) { + keyCode = WXK_RETURN; + } else if ( current == wxT("PGUP") ) { - keyCode = VK_PRIOR; + keyCode = WXK_PRIOR; } else if ( current == wxT("PGDN") ) { - keyCode = VK_NEXT; + keyCode = WXK_NEXT; + } + else if ( current == wxT("LEFT") ) { + keyCode = WXK_LEFT; + } + else if ( current == wxT("RIGHT") ) { + keyCode = WXK_RIGHT; + } + else if ( current == wxT("UP") ) { + keyCode = WXK_UP; + } + else if ( current == wxT("DOWN") ) { + keyCode = WXK_DOWN; + } + else if ( current == wxT("HOME") ) { + keyCode = WXK_HOME; + } + else if ( current == wxT("END") ) { + keyCode = WXK_END; + } + else if ( current == wxT("SPACE") ) { + keyCode = WXK_SPACE; + } + else if ( current == wxT("TAB") ) { + keyCode = WXK_TAB; } -#endif else { wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."), @@ -756,7 +814,7 @@ int wxMenuBarBase::FindMenu(const wxString& title) const (wxMenuItem::GetLabelFromText(title2) == label) ) { // found - return (int)i; + return (int)i; } }