X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5ccb95f690bd7265b1b86718149a79bb97dcf4d8..1de43645160fd0686ec025112362d56da2ad77c2:/include/wx/utils.h diff --git a/include/wx/utils.h b/include/wx/utils.h index ed432b8582..517385f7b7 100644 --- a/include/wx/utils.h +++ b/include/wx/utils.h @@ -52,16 +52,13 @@ class WXDLLIMPEXP_CORE wxPoint; #define wxMax(a,b) (((a) > (b)) ? (a) : (b)) #define wxMin(a,b) (((a) < (b)) ? (a) : (b)) -// wxGetFreeMemory can return huge amount of memory on 64-bit platforms -// define wxMemorySize according to the type which best fits your platform -#if wxUSE_LONGLONG && defined(__WIN64__) - // 64 bit Windowses have sizeof(long) only 32 bit long - // we need to use wxLongLong to express memory sizes - #define wxMemorySize wxLongLong +// wxGetFreeMemory can return huge amount of memory on 32-bit platforms as well +// so to always use long long for its result type on all platforms which +// support it +#if wxUSE_LONGLONG + typedef wxLongLong wxMemorySize; #else - // 64 bit UNIX has sizeof(long) = 64 - // assume 32 bit platforms cannnot return more than 32bits of - #define wxMemorySize long + typedef long wxMemorySize; #endif // ---------------------------------------------------------------------------- @@ -117,6 +114,70 @@ WXDLLEXPORT bool wxGetKeyState(wxKeyCode key); // in wxMSW. WXDLLEXPORT bool wxSetDetectableAutoRepeat( bool flag ); + +// wxMouseState is used to hold information about button and modifier state +// and is what is returned from wxGetMouseState. +class WXDLLEXPORT wxMouseState +{ +public: + wxMouseState() + : m_x(0), m_y(0), + m_leftDown(false), m_middleDown(false), m_rightDown(false), + m_controlDown(false), m_shiftDown(false), m_altDown(false), + m_metaDown(false) + {} + + wxCoord GetX() { return m_x; } + wxCoord GetY() { return m_y; } + + bool LeftDown() { return m_leftDown; } + bool MiddleDown() { return m_middleDown; } + bool RightDown() { return m_rightDown; } + + bool ControlDown() { return m_controlDown; } + bool ShiftDown() { return m_shiftDown; } + bool AltDown() { return m_altDown; } + bool MetaDown() { return m_metaDown; } + bool CmdDown() + { +#if defined(__WXMAC__) || defined(__WXCOCOA__) + return MetaDown(); +#else + return ControlDown(); +#endif + } + + void SetX(wxCoord x) { m_x = x; } + void SetY(wxCoord y) { m_y = y; } + + void SetLeftDown(bool down) { m_leftDown = down; } + void SetMiddleDown(bool down) { m_middleDown = down; } + void SetRightDown(bool down) { m_rightDown = down; } + + void SetControlDown(bool down) { m_controlDown = down; } + void SetShiftDown(bool down) { m_shiftDown = down; } + void SetAltDown(bool down) { m_altDown = down; } + void SetMetaDown(bool down) { m_metaDown = down; } + +private: + wxCoord m_x; + wxCoord m_y; + + bool m_leftDown; + bool m_middleDown; + bool m_rightDown; + + bool m_controlDown; + bool m_shiftDown; + bool m_altDown; + bool m_metaDown; +}; + + +// Returns the current state of the mouse position, buttons and modifers +WXDLLEXPORT wxMouseState wxGetMouseState(); + + // ---------------------------------------------------------------------------- // Window ID management // ----------------------------------------------------------------------------