]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/accel.cpp
Temporary fix for link error to ~wxZipOutputStream()
[wxWidgets.git] / src / os2 / accel.cpp
index 611f53c95985557305158c9a98b50e1738a28121..044c1b28d435fd9e4ea4603b0d944c1f1f4011e4 100644 (file)
@@ -90,7 +90,7 @@ wxAcceleratorTable::wxAcceleratorTable(
 
         ::WinSetAccelTable( vHabmain
                            ,hAccel
 
         ::WinSetAccelTable( vHabmain
                            ,hAccel
-                           ,(HWND)pFrame->GetHWND()
+                           ,(HWND)pFrame->GetFrame()
                           );
     }
     M_ACCELDATA->m_hAccel = hAccel;
                           );
     }
     M_ACCELDATA->m_hAccel = hAccel;
@@ -105,7 +105,7 @@ extern int wxCharCodeWXToOS2(
 // Create from an array
 wxAcceleratorTable::wxAcceleratorTable(
   int                               n
 // Create from an array
 wxAcceleratorTable::wxAcceleratorTable(
   int                               n
-, wxAcceleratorEntry                vaEntries[]
+, const wxAcceleratorEntry          vaEntries[]
 )
 {
     int                             nAccelLength = ((sizeof(ACCEL) * n) + sizeof(ACCELTABLE));
 )
 {
     int                             nAccelLength = ((sizeof(ACCEL) * n) + sizeof(ACCELTABLE));
@@ -120,11 +120,20 @@ wxAcceleratorTable::wxAcceleratorTable(
         USHORT                      uVirt = AF_CHAR;
 
         if (vaEntries[i].GetFlags() & wxACCEL_ALT)
         USHORT                      uVirt = AF_CHAR;
 
         if (vaEntries[i].GetFlags() & wxACCEL_ALT)
+        {
             uVirt |= AF_ALT;
             uVirt |= AF_ALT;
+            uVirt |= AF_VIRTUALKEY;
+        }
         if (vaEntries[i].GetFlags() & wxACCEL_SHIFT)
         if (vaEntries[i].GetFlags() & wxACCEL_SHIFT)
+        {
             uVirt |= AF_SHIFT;
             uVirt |= AF_SHIFT;
+            uVirt |= AF_VIRTUALKEY;
+        }
         if (vaEntries[i].GetFlags() & wxACCEL_CTRL)
         if (vaEntries[i].GetFlags() & wxACCEL_CTRL)
+        {
             uVirt |= AF_CONTROL;
             uVirt |= AF_CONTROL;
+            uVirt |= AF_VIRTUALKEY;
+        }
 
         bool                        bIsVirtual;
         USHORT                      uKey = wxCharCodeWXToOS2( vaEntries[i].GetKeyCode()
 
         bool                        bIsVirtual;
         USHORT                      uKey = wxCharCodeWXToOS2( vaEntries[i].GetKeyCode()
@@ -139,7 +148,7 @@ wxAcceleratorTable::wxAcceleratorTable(
         pArr->aaccel[i].key = uKey;
         pArr->aaccel[i].cmd = uCmd;
     }
         pArr->aaccel[i].key = uKey;
         pArr->aaccel[i].cmd = uCmd;
     }
-    pArr->codepage = 437; // default to english Fix???
+    pArr->codepage = ::WinQueryCp(wxTheApp->m_hMq);
     pArr->cAccel = (USHORT)n;
     M_ACCELDATA->m_hAccel = ::WinCreateAccelTable( vHabmain
                                                   ,pArr
     pArr->cAccel = (USHORT)n;
     M_ACCELDATA->m_hAccel = ::WinCreateAccelTable( vHabmain
                                                   ,pArr
@@ -153,7 +162,7 @@ wxAcceleratorTable::wxAcceleratorTable(
 
         ::WinSetAccelTable( vHabmain
                            ,M_ACCELDATA->m_hAccel
 
         ::WinSetAccelTable( vHabmain
                            ,M_ACCELDATA->m_hAccel
-                           ,(HWND)pFrame->GetHWND()
+                           ,(HWND)pFrame->GetFrame()
                           );
     }
 
                           );
     }
 
@@ -194,15 +203,48 @@ bool wxAcceleratorTable::Translate(
                              ,GetHaccel()
                              ,pMsg
                             );
                              ,GetHaccel()
                              ,pMsg
                             );
-    if (rc)
-    {
-        int x = 1;
-    }
     return (Ok() && rc);
     return (Ok() && rc);
-//    ::WinTranslateAccel( vHabmain
-//                        ,(HWND)hWnd
-//                        ,GetHaccel()
-//                        ,pMsg
-//                       );
 } // end of wxAcceleratorTable::Translate
 
 } // end of wxAcceleratorTable::Translate
 
+// ---------------------------------------------------------------------------
+// function for translating labels
+// ---------------------------------------------------------------------------
+
+wxString wxPMTextToLabel(
+  const wxString&                   rsTitle
+)
+{
+    wxString                        sTitle;
+    const wxChar*                   zPc;
+
+    if (rsTitle.IsEmpty())
+        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
+