X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..275a63e3a6dc26c411c39a557be003bc4f2aaaaa:/src/common/menucmn.cpp diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index 05bb4f7f8c..ad77746cc9 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -6,7 +6,7 @@ // Created: 26.10.99 // RCS-ID: $Id$ // Copyright: (c) wxWindows team -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -132,7 +132,13 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label) else { if ( current.Len() == 1 ) { // it's a letter - keyCode = wxToupper(current[0U]); + keyCode = current[0U]; + + // Only call wxToupper if control, alt, or shift is held down, + // otherwise lower case accelerators won't work. + if (accelFlags != wxACCEL_NORMAL) { + keyCode = wxToupper(keyCode); + } } else { // is it a function key? @@ -147,51 +153,38 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label) else { // several special cases current.MakeUpper(); - if ( current == wxT("DEL") ) { + if ( current == wxT("DEL") ) keyCode = WXK_DELETE; - } - else if ( current == wxT("DELETE") ) { + else if ( current == wxT("DELETE") ) keyCode = WXK_DELETE; - } - else if ( current == wxT("INS") ) { + else if ( current == wxT("INS") ) keyCode = WXK_INSERT; - } - else if ( current == wxT("INSERT") ) { + else if ( current == wxT("INSERT") ) keyCode = WXK_INSERT; - } - else if ( current == wxT("ENTER") || current == wxT("RETURN") ) { + else if ( current == wxT("ENTER") || current == wxT("RETURN") ) keyCode = WXK_RETURN; - } - else if ( current == wxT("PGUP") ) { + else if ( current == wxT("PGUP") ) keyCode = WXK_PRIOR; - } - else if ( current == wxT("PGDN") ) { + else if ( current == wxT("PGDN") ) keyCode = WXK_NEXT; - } - else if ( current == wxT("LEFT") ) { + else if ( current == wxT("LEFT") ) keyCode = WXK_LEFT; - } - else if ( current == wxT("RIGHT") ) { + else if ( current == wxT("RIGHT") ) keyCode = WXK_RIGHT; - } - else if ( current == wxT("UP") ) { + else if ( current == wxT("UP") ) keyCode = WXK_UP; - } - else if ( current == wxT("DOWN") ) { + else if ( current == wxT("DOWN") ) keyCode = WXK_DOWN; - } - else if ( current == wxT("HOME") ) { + else if ( current == wxT("HOME") ) keyCode = WXK_HOME; - } - else if ( current == wxT("END") ) { + else if ( current == wxT("END") ) keyCode = WXK_END; - } - else if ( current == wxT("SPACE") ) { + else if ( current == wxT("SPACE") ) keyCode = WXK_SPACE; - } - else if ( current == wxT("TAB") ) { + else if ( current == wxT("TAB") ) keyCode = WXK_TAB; - } + else if ( current == wxT("ESC") || current == wxT("ESCAPE") ) + keyCode = WXK_ESCAPE; else { wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."),