X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c50f1fb9226d9260454ccb9c8a67d0be23c2827f..19e30148e18cc99296b26503c155e5cef59045f4:/src/msw/accel.cpp diff --git a/src/msw/accel.cpp b/src/msw/accel.cpp index 1a2c5d78af..559f3eaae7 100644 --- a/src/msw/accel.cpp +++ b/src/msw/accel.cpp @@ -21,18 +21,14 @@ #endif #ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/window.h" + #include "wx/window.h" #endif -#include "wx/msw/accel.h" +#include "wx/accel.h" #include "wx/msw/private.h" -#if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) -#endif class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData { @@ -105,26 +101,27 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[] m_refData = new wxAcceleratorRefData; ACCEL* arr = new ACCEL[n]; - int i; - for (i = 0; i < n; i++) + for ( int i = 0; i < n; i++ ) { + int flags = entries[i].GetFlags(); + BYTE fVirt = 0; - if (entries[i].m_flags & wxACCEL_ALT) - fVirt |= FALT; - if (entries[i].m_flags & wxACCEL_SHIFT) - fVirt |= FSHIFT; - if (entries[i].m_flags & wxACCEL_CTRL) - fVirt |= FCONTROL; + if ( flags & wxACCEL_ALT ) + fVirt |= FALT | FVIRTKEY; + if ( flags & wxACCEL_SHIFT ) + fVirt |= FSHIFT | FVIRTKEY; + if ( flags & wxACCEL_CTRL ) + fVirt |= FCONTROL | FVIRTKEY; bool isVirtual; - WORD key = wxCharCodeWXToMSW(entries[i].m_keyCode, & isVirtual); - fVirt |= FVIRTKEY; - WORD cmd = entries[i].m_command; + WORD key = wxCharCodeWXToMSW(entries[i].GetKeyCode(), &isVirtual); + if (isVirtual) + fVirt |= FVIRTKEY; arr[i].fVirt = fVirt; arr[i].key = key; - arr[i].cmd = cmd; + arr[i].cmd = entries[i].GetCommand(); } M_ACCELDATA->m_hAccel = ::CreateAcceleratorTable(arr, n); @@ -135,7 +132,9 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[] #else // Win16 wxAcceleratorTable::wxAcceleratorTable(int WXUNUSED(n), const wxAcceleratorEntry WXUNUSED(entries)[]) { - wxFAIL_MSG("not implemented"); + // No, we simply gracefully degrade; we don't expect the + // developer to pepper their code with #ifdefs just for this. + // wxFAIL_MSG("not implemented"); } #endif // Win32/16 @@ -162,5 +161,6 @@ WXHACCEL wxAcceleratorTable::GetHACCEL() const bool wxAcceleratorTable::Translate(wxWindow *window, WXMSG *wxmsg) const { MSG *msg = (MSG *)wxmsg; + return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg); +} - return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg); }