]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/accel.cpp
Assert correction.
[wxWidgets.git] / src / os2 / accel.cpp
index 039439d25d2112788476d654e7cd2fb489be7bc3..34be76481503cfe9c93d0daf25e1c7500aaa367e 100644 (file)
@@ -135,20 +135,19 @@ wxAcceleratorTable::wxAcceleratorTable(
             uVirt |= AF_VIRTUALKEY;
         }
 
-        bool                        bIsVirtual;
-        USHORT                      uKey = wxCharCodeWXToOS2( vaEntries[i].GetKeyCode()
-                                                             ,&bIsVirtual
-                                                            );
+        bool bIsVirtual;
+        USHORT uKey = (USHORT)wxCharCodeWXToOS2( vaEntries[i].GetKeyCode(),
+                                                 &bIsVirtual);
         if (bIsVirtual)
             uVirt = AF_CHAR | AF_VIRTUALKEY;
 
-        USHORT                      uCmd = vaEntries[i].GetCommand();
+        USHORT uCmd = (USHORT)vaEntries[i].GetCommand();
 
         pArr->aaccel[i].fs  = uVirt;
         pArr->aaccel[i].key = uKey;
         pArr->aaccel[i].cmd = uCmd;
     }
-    pArr->codepage = 437;
+    pArr->codepage = (USHORT)::WinQueryCp(wxTheApp->m_hMq);
     pArr->cAccel = (USHORT)n;
     M_ACCELDATA->m_hAccel = ::WinCreateAccelTable( vHabmain
                                                   ,pArr
@@ -158,7 +157,7 @@ wxAcceleratorTable::wxAcceleratorTable(
         //
         // If we have accelerators the top window is the frame
         //
-        wxFrame*                    pFrame = (wxFrame*)wxTheApp->GetTopWindow();
+        wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow();
 
         ::WinSetAccelTable( vHabmain
                            ,M_ACCELDATA->m_hAccel
@@ -203,10 +202,45 @@ bool wxAcceleratorTable::Translate(
                              ,GetHaccel()
                              ,pMsg
                             );
-    if (rc)
-    {
-        int x = 1;
-    }
     return (Ok() && rc);
 } // end of wxAcceleratorTable::Translate
 
+// ---------------------------------------------------------------------------
+// function for translating labels
+// ---------------------------------------------------------------------------
+
+wxString wxPMTextToLabel( const wxString& rsTitle )
+{
+    wxString      sTitle;
+    const wxChar* zPc;
+
+    if (rsTitle.empty())
+        return(sTitle);
+
+    for (zPc = rsTitle.c_str(); *zPc != wxT('\0'); zPc++)
+    {
+        if (*zPc == wxT('&'))
+        {
+            if (*(zPc + 1) == wxT('&'))
+            {
+                zPc++;
+                sTitle << wxT('&');
+            }
+            else
+                sTitle << wxT('~');
+        }
+        else
+        {
+            if ( *zPc == wxT('~'))
+            {
+                //
+                // Tildes must be doubled to prevent them from being
+                // interpreted as accelerator character prefix by PM ???
+                //
+                sTitle << *zPc;
+            }
+            sTitle << *zPc;
+        }
+    }
+    return(sTitle);
+} // end of wxPMTextToLabel