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/kbdstate.h"
16 // the symbolic names for the mouse buttons
22 wxMOUSE_BTN_MIDDLE
= 2,
23 wxMOUSE_BTN_RIGHT
= 3,
29 // ----------------------------------------------------------------------------
30 // wxMouseState contains the information about mouse position, buttons and also
32 // ----------------------------------------------------------------------------
34 // wxMouseState is used to hold information about button and modifier state
35 // and is what is returned from wxGetMouseState.
36 class WXDLLIMPEXP_CORE wxMouseState
: public wxKeyboardState
40 : m_leftDown(false), m_middleDown(false), m_rightDown(false),
41 m_aux1Down(false), m_aux2Down(false),
46 // default copy ctor, assignment operator and dtor are ok
49 // accessors for the mouse position
50 wxCoord
GetX() const { return m_x
; }
51 wxCoord
GetY() const { return m_y
; }
52 wxPoint
GetPosition() const { return wxPoint(m_x
, m_y
); }
53 void GetPosition(wxCoord
*x
, wxCoord
*y
) const
61 // this overload is for compatibility only
62 void GetPosition(long *x
, long *y
) const
70 // accessors for the pressed buttons
71 bool LeftIsDown() const { return m_leftDown
; }
72 bool MiddleIsDown() const { return m_middleDown
; }
73 bool RightIsDown() const { return m_rightDown
; }
74 bool Aux1IsDown() const { return m_aux1Down
; }
75 bool Aux2IsDown() const { return m_aux2Down
; }
77 bool ButtonIsDown(wxMouseButton but
) const
82 wxFAIL_MSG(wxT("invalid parameter in wxMouseState::ButtonIsDown"));
86 return LeftIsDown() || MiddleIsDown() || RightIsDown() ||
87 Aux1IsDown() || Aux2IsDown();
89 case wxMOUSE_BTN_LEFT
:
92 case wxMOUSE_BTN_MIDDLE
:
93 return MiddleIsDown();
95 case wxMOUSE_BTN_RIGHT
:
98 case wxMOUSE_BTN_AUX1
:
101 case wxMOUSE_BTN_AUX2
:
107 // these functions are mostly used by wxWidgets itself
108 void SetX(wxCoord x
) { m_x
= x
; }
109 void SetY(wxCoord y
) { m_y
= y
; }
110 void SetPosition(wxPoint pos
) { m_x
= pos
.x
, m_y
= pos
.y
; }
112 void SetLeftDown(bool down
) { m_leftDown
= down
; }
113 void SetMiddleDown(bool down
) { m_middleDown
= down
; }
114 void SetRightDown(bool down
) { m_rightDown
= down
; }
115 void SetAux1Down(bool down
) { m_aux1Down
= down
; }
116 void SetAux2Down(bool down
) { m_aux2Down
= down
; }
118 // this mostly makes sense in the derived classes such as wxMouseEvent
119 void SetState(const wxMouseState
& state
) { *this = state
; }
121 // these functions are for compatibility only, they were used in 2.8
122 // version of wxMouseState but their names are confusing as wxMouseEvent
123 // has methods with the same names which do something quite different so
124 // don't use them any more
125 #ifdef WXWIN_COMPATIBILITY_2_8
126 wxDEPRECATED_INLINE(bool LeftDown() const, return LeftIsDown(); )
127 wxDEPRECATED_INLINE(bool MiddleDown() const, return MiddleIsDown(); )
128 wxDEPRECATED_INLINE(bool RightDown() const, return RightIsDown(); )
129 #endif // WXWIN_COMPATIBILITY_2_8
131 // for compatibility reasons these variables are public as the code using
132 // wxMouseEvent often uses them directly -- however they should not be
133 // accessed directly in this class, use the accessors above instead
136 bool m_middleDown
: 1;
137 bool m_rightDown
: 1;
145 #endif // _WX_MOUSESTATE_H_