X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f02a879ed7efc5fcf6328ff47a1352ec82812b7..abd474ea63667f727940a009cc3e0b23ba9f418f:/src/msw/accel.cpp?ds=sidebyside diff --git a/src/msw/accel.cpp b/src/msw/accel.cpp index 458a14a21b..434df30367 100644 --- a/src/msw/accel.cpp +++ b/src/msw/accel.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/accel.cpp +// Name: src/msw/accel.cpp // Purpose: wxAcceleratorTable // Author: Julian Smart // Modified by: @@ -33,8 +33,7 @@ #include "wx/accel.h" #include "wx/msw/private.h" - -extern WXWORD wxCharCodeWXToMSW(int id, bool *isVirtual); +#include "wx/msw/private/keyboard.h" IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) @@ -44,17 +43,17 @@ IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData { - friend class WXDLLEXPORT wxAcceleratorTable; + friend class WXDLLIMPEXP_FWD_CORE wxAcceleratorTable; public: wxAcceleratorRefData(); - ~wxAcceleratorRefData(); + virtual ~wxAcceleratorRefData(); inline HACCEL GetHACCEL() const { return m_hAccel; } protected: HACCEL m_hAccel; bool m_ok; - DECLARE_NO_COPY_CLASS(wxAcceleratorRefData) + wxDECLARE_NO_COPY_CLASS(wxAcceleratorRefData); }; // ============================================================================ @@ -90,7 +89,7 @@ wxAcceleratorTable::wxAcceleratorTable(const wxString& resource) { m_refData = new wxAcceleratorRefData; - HACCEL hAccel = ::LoadAccelerators(wxGetInstance(), resource); + HACCEL hAccel = ::LoadAccelerators(wxGetInstance(), resource.wx_str()); M_ACCELDATA->m_hAccel = hAccel; M_ACCELDATA->m_ok = hAccel != 0; } @@ -105,19 +104,15 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[] { int flags = entries[i].GetFlags(); - BYTE fVirt = 0; + BYTE fVirt = FVIRTKEY; if ( flags & wxACCEL_ALT ) - fVirt |= FALT | FVIRTKEY; + fVirt |= FALT; if ( flags & wxACCEL_SHIFT ) - fVirt |= FSHIFT | FVIRTKEY; + fVirt |= FSHIFT; if ( flags & wxACCEL_CTRL ) - fVirt |= FCONTROL | FVIRTKEY; - - bool isVirtual; + fVirt |= FCONTROL; - WORD key = wxCharCodeWXToMSW(entries[i].GetKeyCode(), &isVirtual); - if (isVirtual) - fVirt |= FVIRTKEY; + WORD key = wxMSWKeyboard::WXToVK(entries[i].GetKeyCode()); arr[i].fVirt = fVirt; arr[i].key = key; @@ -130,17 +125,7 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[] M_ACCELDATA->m_ok = (M_ACCELDATA->m_hAccel != 0); } -bool wxAcceleratorTable::operator==(const wxAcceleratorTable& accel) const -{ - const wxAcceleratorRefData * - accelData = (wxAcceleratorRefData *)accel.m_refData; - - return m_refData ? (accelData && - M_ACCELDATA->m_hAccel == accelData->m_hAccel) - : !accelData; -} - -bool wxAcceleratorTable::Ok() const +bool wxAcceleratorTable::IsOk() const { return (M_ACCELDATA && (M_ACCELDATA->m_ok)); } @@ -162,15 +147,8 @@ WXHACCEL wxAcceleratorTable::GetHACCEL() const bool wxAcceleratorTable::Translate(wxWindow *window, WXMSG *wxmsg) const { -#if 0 - // calling TranslateAccelerator() with child window doesn't do anything so - // it's probably a bug - wxASSERT_MSG( window->IsTopLevel(), - _T("TranslateAccelerator() needs a top level window") ); -#endif - MSG *msg = (MSG *)wxmsg; - return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg); + return IsOk() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg); } #endif // wxUSE_ACCEL