1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/mousestate.h
3 // Purpose: Declaration of wxMouseState class
4 // Author: Vadim Zeitlin
5 // Created: 2008-09-19 (extracted from wx/utils.h)
7 // Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_MOUSESTATE_H_
12 #define _WX_MOUSESTATE_H_
14 #include "wx/gdicmn.h" // for wxPoint
15 #include "wx/kbdstate.h"
17 // the symbolic names for the mouse buttons
23 wxMOUSE_BTN_MIDDLE
= 2,
24 wxMOUSE_BTN_RIGHT
= 3,
30 // ----------------------------------------------------------------------------
31 // wxMouseState contains the information about mouse position, buttons and also
33 // ----------------------------------------------------------------------------
35 // wxMouseState is used to hold information about button and modifier state
36 // and is what is returned from wxGetMouseState.
37 class WXDLLIMPEXP_CORE wxMouseState
: public wxKeyboardState
41 : m_leftDown(false), m_middleDown(false), m_rightDown(false),
42 m_aux1Down(false), m_aux2Down(false),
47 // default copy ctor, assignment operator and dtor are ok
50 // accessors for the mouse position
51 wxCoord
GetX() const { return m_x
; }
52 wxCoord
GetY() const { return m_y
; }
53 wxPoint
GetPosition() const { return wxPoint(m_x
, m_y
); }
54 void GetPosition(wxCoord
*x
, wxCoord
*y
) const
62 // this overload is for compatibility only
63 void GetPosition(long *x
, long *y
) const
71 // accessors for the pressed buttons
72 bool LeftIsDown() const { return m_leftDown
; }
73 bool MiddleIsDown() const { return m_middleDown
; }
74 bool RightIsDown() const { return m_rightDown
; }
75 bool Aux1IsDown() const { return m_aux1Down
; }
76 bool Aux2IsDown() const { return m_aux2Down
; }
78 bool ButtonIsDown(wxMouseButton but
) const
83 return LeftIsDown() || MiddleIsDown() || RightIsDown() ||
84 Aux1IsDown() || Aux2IsDown();
86 case wxMOUSE_BTN_LEFT
:
89 case wxMOUSE_BTN_MIDDLE
:
90 return MiddleIsDown();
92 case wxMOUSE_BTN_RIGHT
:
95 case wxMOUSE_BTN_AUX1
:
98 case wxMOUSE_BTN_AUX2
:
101 case wxMOUSE_BTN_NONE
:
102 case wxMOUSE_BTN_MAX
:
103 wxFAIL_MSG(wxS("invalid parameter"));
107 wxFAIL_MSG(wxS("unknown parameter"));
113 // these functions are mostly used by wxWidgets itself
114 void SetX(wxCoord x
) { m_x
= x
; }
115 void SetY(wxCoord y
) { m_y
= y
; }
116 void SetPosition(wxPoint pos
) { m_x
= pos
.x
, m_y
= pos
.y
; }
118 void SetLeftDown(bool down
) { m_leftDown
= down
; }
119 void SetMiddleDown(bool down
) { m_middleDown
= down
; }
120 void SetRightDown(bool down
) { m_rightDown
= down
; }
121 void SetAux1Down(bool down
) { m_aux1Down
= down
; }
122 void SetAux2Down(bool down
) { m_aux2Down
= down
; }
124 // this mostly makes sense in the derived classes such as wxMouseEvent
125 void SetState(const wxMouseState
& state
) { *this = state
; }
127 // these functions are for compatibility only, they were used in 2.8
128 // version of wxMouseState but their names are confusing as wxMouseEvent
129 // has methods with the same names which do something quite different so
130 // don't use them any more
131 #ifdef WXWIN_COMPATIBILITY_2_8
132 wxDEPRECATED_INLINE(bool LeftDown() const, return LeftIsDown(); )
133 wxDEPRECATED_INLINE(bool MiddleDown() const, return MiddleIsDown(); )
134 wxDEPRECATED_INLINE(bool RightDown() const, return RightIsDown(); )
135 #endif // WXWIN_COMPATIBILITY_2_8
137 // for compatibility reasons these variables are public as the code using
138 // wxMouseEvent often uses them directly -- however they should not be
139 // accessed directly in this class, use the accessors above instead
142 bool m_middleDown
: 1;
143 bool m_rightDown
: 1;
151 #endif // _WX_MOUSESTATE_H_