X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e15bbde04114171a20d8f74d4c602cb53c84908d..d3e0ffbcd01cd6172234f9dc14f870ed6e1125cd:/src/os2/accel.cpp diff --git a/src/os2/accel.cpp b/src/os2/accel.cpp index 611f53c959..044c1b28d4 100644 --- a/src/os2/accel.cpp +++ b/src/os2/accel.cpp @@ -90,7 +90,7 @@ wxAcceleratorTable::wxAcceleratorTable( ::WinSetAccelTable( vHabmain ,hAccel - ,(HWND)pFrame->GetHWND() + ,(HWND)pFrame->GetFrame() ); } M_ACCELDATA->m_hAccel = hAccel; @@ -105,7 +105,7 @@ extern int wxCharCodeWXToOS2( // Create from an array wxAcceleratorTable::wxAcceleratorTable( int n -, wxAcceleratorEntry vaEntries[] +, const wxAcceleratorEntry vaEntries[] ) { int nAccelLength = ((sizeof(ACCEL) * n) + sizeof(ACCELTABLE)); @@ -120,11 +120,20 @@ wxAcceleratorTable::wxAcceleratorTable( USHORT uVirt = AF_CHAR; if (vaEntries[i].GetFlags() & wxACCEL_ALT) + { uVirt |= AF_ALT; + uVirt |= AF_VIRTUALKEY; + } if (vaEntries[i].GetFlags() & wxACCEL_SHIFT) + { uVirt |= AF_SHIFT; + uVirt |= AF_VIRTUALKEY; + } if (vaEntries[i].GetFlags() & wxACCEL_CTRL) + { uVirt |= AF_CONTROL; + uVirt |= AF_VIRTUALKEY; + } 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->codepage = 437; // default to english Fix??? + pArr->codepage = ::WinQueryCp(wxTheApp->m_hMq); pArr->cAccel = (USHORT)n; M_ACCELDATA->m_hAccel = ::WinCreateAccelTable( vHabmain ,pArr @@ -153,7 +162,7 @@ wxAcceleratorTable::wxAcceleratorTable( ::WinSetAccelTable( vHabmain ,M_ACCELDATA->m_hAccel - ,(HWND)pFrame->GetHWND() + ,(HWND)pFrame->GetFrame() ); } @@ -194,15 +203,48 @@ bool wxAcceleratorTable::Translate( ,GetHaccel() ,pMsg ); - if (rc) - { - int x = 1; - } return (Ok() && rc); -// ::WinTranslateAccel( vHabmain -// ,(HWND)hWnd -// ,GetHaccel() -// ,pMsg -// ); } // 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 +