]> git.saurik.com Git - wxWidgets.git/blame - include/wx/mousestate.h
Document wxKill(wxSIGTERM) reliance on having an open window in wxMSW.
[wxWidgets.git] / include / wx / mousestate.h
CommitLineData
0e097789
VZ
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)
6// RCS-ID: $Id$
7// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
8// Licence: wxWindows licence
9///////////////////////////////////////////////////////////////////////////////
10
11#ifndef _WX_MOUSESTATE_H_
12#define _WX_MOUSESTATE_H_
13
1c9039c3 14#include "wx/gdicmn.h" // for wxPoint
0e097789
VZ
15#include "wx/kbdstate.h"
16
ab826fd8
VZ
17// the symbolic names for the mouse buttons
18enum wxMouseButton
19{
20 wxMOUSE_BTN_ANY = -1,
21 wxMOUSE_BTN_NONE = 0,
22 wxMOUSE_BTN_LEFT = 1,
23 wxMOUSE_BTN_MIDDLE = 2,
24 wxMOUSE_BTN_RIGHT = 3,
25 wxMOUSE_BTN_AUX1 = 4,
26 wxMOUSE_BTN_AUX2 = 5,
27 wxMOUSE_BTN_MAX
28};
29
0e097789
VZ
30// ----------------------------------------------------------------------------
31// wxMouseState contains the information about mouse position, buttons and also
32// key modifiers
33// ----------------------------------------------------------------------------
34
35// wxMouseState is used to hold information about button and modifier state
36// and is what is returned from wxGetMouseState.
37class WXDLLIMPEXP_CORE wxMouseState : public wxKeyboardState
38{
39public:
40 wxMouseState()
dfa569f0
VZ
41 : m_leftDown(false), m_middleDown(false), m_rightDown(false),
42 m_aux1Down(false), m_aux2Down(false),
43 m_x(0), m_y(0)
0e097789
VZ
44 {
45 }
46
47 // default copy ctor, assignment operator and dtor are ok
48
49
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); }
ab826fd8
VZ
54 void GetPosition(wxCoord *x, wxCoord *y) const
55 {
56 if ( x )
57 *x = m_x;
58 if ( y )
59 *y = m_y;
60 }
61
62 // this overload is for compatibility only
63 void GetPosition(long *x, long *y) const
64 {
65 if ( x )
66 *x = m_x;
67 if ( y )
68 *y = m_y;
69 }
0e097789
VZ
70
71 // accessors for the pressed buttons
ab826fd8
VZ
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; }
77
78 bool ButtonIsDown(wxMouseButton but) const
79 {
80 switch ( but )
81 {
ab826fd8
VZ
82 case wxMOUSE_BTN_ANY:
83 return LeftIsDown() || MiddleIsDown() || RightIsDown() ||
84 Aux1IsDown() || Aux2IsDown();
85
86 case wxMOUSE_BTN_LEFT:
87 return LeftIsDown();
88
89 case wxMOUSE_BTN_MIDDLE:
90 return MiddleIsDown();
91
92 case wxMOUSE_BTN_RIGHT:
93 return RightIsDown();
94
95 case wxMOUSE_BTN_AUX1:
96 return Aux1IsDown();
97
98 case wxMOUSE_BTN_AUX2:
99 return Aux2IsDown();
907ea7d5
VZ
100
101 case wxMOUSE_BTN_NONE:
102 case wxMOUSE_BTN_MAX:
dc8cd788 103 break;
ab826fd8 104 }
dc8cd788
VZ
105
106 wxFAIL_MSG(wxS("invalid parameter"));
107 return false;
ab826fd8
VZ
108 }
109
0e097789
VZ
110
111 // these functions are mostly used by wxWidgets itself
112 void SetX(wxCoord x) { m_x = x; }
113 void SetY(wxCoord y) { m_y = y; }
ab826fd8 114 void SetPosition(wxPoint pos) { m_x = pos.x, m_y = pos.y; }
0e097789
VZ
115
116 void SetLeftDown(bool down) { m_leftDown = down; }
117 void SetMiddleDown(bool down) { m_middleDown = down; }
118 void SetRightDown(bool down) { m_rightDown = down; }
119 void SetAux1Down(bool down) { m_aux1Down = down; }
120 void SetAux2Down(bool down) { m_aux2Down = down; }
121
ab826fd8
VZ
122 // this mostly makes sense in the derived classes such as wxMouseEvent
123 void SetState(const wxMouseState& state) { *this = state; }
124
c1ea6afb
VZ
125 // these functions are for compatibility only, they were used in 2.8
126 // version of wxMouseState but their names are confusing as wxMouseEvent
127 // has methods with the same names which do something quite different so
128 // don't use them any more
7bc57fd9 129#if WXWIN_COMPATIBILITY_2_8
c1ea6afb
VZ
130 wxDEPRECATED_INLINE(bool LeftDown() const, return LeftIsDown(); )
131 wxDEPRECATED_INLINE(bool MiddleDown() const, return MiddleIsDown(); )
132 wxDEPRECATED_INLINE(bool RightDown() const, return RightIsDown(); )
133#endif // WXWIN_COMPATIBILITY_2_8
ab826fd8
VZ
134
135 // for compatibility reasons these variables are public as the code using
136 // wxMouseEvent often uses them directly -- however they should not be
137 // accessed directly in this class, use the accessors above instead
138// private:
0e097789
VZ
139 bool m_leftDown : 1;
140 bool m_middleDown : 1;
141 bool m_rightDown : 1;
142 bool m_aux1Down : 1;
143 bool m_aux2Down : 1;
144
145 wxCoord m_x,
146 m_y;
147};
148
149#endif // _WX_MOUSESTATE_H_
150