From f09d8a3b940bbdfdc1907f1de97ba99e297a315c Mon Sep 17 00:00:00 2001 From: David Webster Date: Fri, 18 Aug 2000 12:00:39 +0000 Subject: [PATCH] Reparied accel processing git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8124 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/os2/accel.cpp | 4 ++-- src/os2/app.cpp | 31 ++++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/os2/accel.cpp b/src/os2/accel.cpp index 1fdc45861f..bda2003f77 100644 --- a/src/os2/accel.cpp +++ b/src/os2/accel.cpp @@ -89,8 +89,8 @@ wxAcceleratorTable::wxAcceleratorTable( wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow(); ::WinSetAccelTable( vHabmain - ,(HWND)pFrame->GetFrame() ,hAccel + ,(HWND)pFrame->GetFrame() ); } M_ACCELDATA->m_hAccel = hAccel; @@ -152,8 +152,8 @@ wxAcceleratorTable::wxAcceleratorTable( wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow(); ::WinSetAccelTable( vHabmain - ,(HWND)pFrame->GetFrame() ,M_ACCELDATA->m_hAccel + ,(HWND)pFrame->GetFrame() ); } diff --git a/src/os2/app.cpp b/src/os2/app.cpp index 4aa19bee52..f03a8e20ed 100644 --- a/src/os2/app.cpp +++ b/src/os2/app.cpp @@ -731,16 +731,33 @@ bool wxApp::ProcessMessage( // // Try translations first; find the youngest window with - // a translation table. + // a translation table. OS/2 has case sensative accels, so + // this block, coded by BK, removes that and helps make them + // case insensative. // -#if 0 - for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() ) + if(pMsg->msg == WM_CHAR) { - if (pMsg->msg == WM_CHAR) - if (pWnd->OS2TranslateMessage(pWxmsg)) - return TRUE; + PBYTE pChmsg = (PBYTE)&(pMsg->msg); + USHORT uSch = CHARMSG(pChmsg)->chr; + bool bRc; + + // + // Do not process keyup events + // + if(!(CHARMSG(pChmsg)->fs & KC_KEYUP)) + { + if((CHARMSG(pChmsg)->fs & (KC_ALT | KC_CTRL)) && CHARMSG(pChmsg)->chr != 0) + CHARMSG(pChmsg)->chr = (USHORT)wxToupper((UCHAR)usch); + + for(pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() ) + { + if(pWnd->OS2TranslateMessage(pWxmsg)) + break; + } + if(!bRc) // untranslated, should restore original value + CHARMSG(pChmsg)->chr = uSch; + } } -#endif // // Anyone for a non-translation message? Try youngest descendants first. // -- 2.45.2