]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/accelcmn.cpp
Include compilation of tests for OpenVMS (part2)
[wxWidgets.git] / src / common / accelcmn.cpp
index d524d15d0c3e68a879f3fc9e29665ca2fdf0c153..718275e160520564ffbdb7ca9330b28f5c4ead28 100644 (file)
@@ -40,7 +40,7 @@
 static const struct wxKeyName
 {
     wxKeyCode code;
-    const wxChar *name;
+    const char *name;
 } wxKeyNames[] =
 {
     { WXK_DELETE, wxTRANSLATE("DEL") },
@@ -114,7 +114,7 @@ static const struct wxKeyName
 //
 // as accels can be either translated or not, check for both possibilities and
 // also compare case-insensitively as the key names case doesn't count
-static inline bool CompareAccelString(const wxString& str, const wxChar *accel)
+static inline bool CompareAccelString(const wxString& str, const char *accel)
 {
     return str.CmpNoCase(accel) == 0
 #if wxUSE_INTL
@@ -128,7 +128,7 @@ static inline bool CompareAccelString(const wxString& str, const wxChar *accel)
 //
 // first and last parameter specify the valid domain for "number" part
 static int IsNumberedAccelKey(const wxString& str,
-                              const wxChar *prefix,
+                              const char *prefix,
                               wxKeyCode prefixCode,
                               unsigned first,
                               unsigned last)
@@ -145,7 +145,7 @@ static int IsNumberedAccelKey(const wxString& str,
     {
         // this must be a mistake, chances that this is a valid name of another
         // key are vanishingly small
-        wxLogDebug(_T("Invalid key string \"%s\""), str.c_str());
+        wxLogDebug(wxT("Invalid key string \"%s\""), str.c_str());
         return 0;
     }
 
@@ -160,17 +160,19 @@ wxAcceleratorEntry::ParseAccel(const wxString& text, int *flagsOut, int *keyOut)
     wxString label = text;
     label.Trim(true);  // the initial \t must be preserved so don't strip leading whitespaces
 
+    // If we're passed the entire menu item label instead of just the
+    // accelerator, skip the label part and only look after the TAB.
     // check for accelerators: they are given after '\t'
     int posTab = label.Find(wxT('\t'));
     if ( posTab == wxNOT_FOUND )
-    {
-        return false;
-    }
+        posTab = 0;
+    else
+        posTab++;
 
     // parse the accelerator string
     int accelFlags = wxACCEL_NORMAL;
     wxString current;
-    for ( size_t n = (size_t)posTab + 1; n < label.length(); n++ )
+    for ( size_t n = (size_t)posTab; n < label.length(); n++ )
     {
         if ( (label[n] == '+') || (label[n] == '-') )
         {
@@ -259,7 +261,7 @@ wxAcceleratorEntry::ParseAccel(const wxString& text, int *flagsOut, int *keyOut)
     }
 
 
-    wxASSERT_MSG( keyCode, _T("logic error: should have key code here") );
+    wxASSERT_MSG( keyCode, wxT("logic error: should have key code here") );
 
     if ( flagsOut )
         *flagsOut = accelFlags;
@@ -291,11 +293,11 @@ wxString wxAcceleratorEntry::ToString() const
 
     int flags = GetFlags();
     if ( flags & wxACCEL_ALT )
-        text += _("Alt-");
+        text += _("Alt+");
     if ( flags & wxACCEL_CTRL )
-        text += _("Ctrl-");
+        text += _("Ctrl+");
     if ( flags & wxACCEL_SHIFT )
-        text += _("Shift-");
+        text += _("Shift+");
 
     const int code = GetKeyCode();
 
@@ -323,7 +325,9 @@ wxString wxAcceleratorEntry::ToString() const
             // must be a simple key
             if (
 #if !wxUSE_UNICODE
-                 isascii(code) &&
+                 // we can't call wxIsalnum() for non-ASCII characters in ASCII
+                 // build as they're only defined for the ASCII range (or EOF)
+                 wxIsascii(code) &&
 #endif // ANSI
                     wxIsalnum(code) )
             {