| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: wx/mousestate.h
- // Purpose: Declaration of wxMouseState class
- // Author: Vadim Zeitlin
- // Created: 2008-09-19 (extracted from wx/utils.h)
- // Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_MOUSESTATE_H_
- #define _WX_MOUSESTATE_H_
- #include "wx/gdicmn.h" // for wxPoint
- #include "wx/kbdstate.h"
- // the symbolic names for the mouse buttons
- enum wxMouseButton
- {
- wxMOUSE_BTN_ANY = -1,
- wxMOUSE_BTN_NONE = 0,
- wxMOUSE_BTN_LEFT = 1,
- wxMOUSE_BTN_MIDDLE = 2,
- wxMOUSE_BTN_RIGHT = 3,
- wxMOUSE_BTN_AUX1 = 4,
- wxMOUSE_BTN_AUX2 = 5,
- wxMOUSE_BTN_MAX
- };
- // ----------------------------------------------------------------------------
- // wxMouseState contains the information about mouse position, buttons and also
- // key modifiers
- // ----------------------------------------------------------------------------
- // wxMouseState is used to hold information about button and modifier state
- // and is what is returned from wxGetMouseState.
- class WXDLLIMPEXP_CORE wxMouseState : public wxKeyboardState
- {
- public:
- wxMouseState()
- : m_leftDown(false), m_middleDown(false), m_rightDown(false),
- m_aux1Down(false), m_aux2Down(false),
- m_x(0), m_y(0)
- {
- }
- // default copy ctor, assignment operator and dtor are ok
- // accessors for the mouse position
- wxCoord GetX() const { return m_x; }
- wxCoord GetY() const { return m_y; }
- wxPoint GetPosition() const { return wxPoint(m_x, m_y); }
- void GetPosition(wxCoord *x, wxCoord *y) const
- {
- if ( x )
- *x = m_x;
- if ( y )
- *y = m_y;
- }
- // this overload is for compatibility only
- void GetPosition(long *x, long *y) const
- {
- if ( x )
- *x = m_x;
- if ( y )
- *y = m_y;
- }
- // accessors for the pressed buttons
- bool LeftIsDown() const { return m_leftDown; }
- bool MiddleIsDown() const { return m_middleDown; }
- bool RightIsDown() const { return m_rightDown; }
- bool Aux1IsDown() const { return m_aux1Down; }
- bool Aux2IsDown() const { return m_aux2Down; }
- bool ButtonIsDown(wxMouseButton but) const
- {
- switch ( but )
- {
- case wxMOUSE_BTN_ANY:
- return LeftIsDown() || MiddleIsDown() || RightIsDown() ||
- Aux1IsDown() || Aux2IsDown();
- case wxMOUSE_BTN_LEFT:
- return LeftIsDown();
- case wxMOUSE_BTN_MIDDLE:
- return MiddleIsDown();
- case wxMOUSE_BTN_RIGHT:
- return RightIsDown();
- case wxMOUSE_BTN_AUX1:
- return Aux1IsDown();
- case wxMOUSE_BTN_AUX2:
- return Aux2IsDown();
- case wxMOUSE_BTN_NONE:
- case wxMOUSE_BTN_MAX:
- break;
- }
- wxFAIL_MSG(wxS("invalid parameter"));
- return false;
- }
- // these functions are mostly used by wxWidgets itself
- void SetX(wxCoord x) { m_x = x; }
- void SetY(wxCoord y) { m_y = y; }
- void SetPosition(wxPoint pos) { m_x = pos.x, m_y = pos.y; }
- void SetLeftDown(bool down) { m_leftDown = down; }
- void SetMiddleDown(bool down) { m_middleDown = down; }
- void SetRightDown(bool down) { m_rightDown = down; }
- void SetAux1Down(bool down) { m_aux1Down = down; }
- void SetAux2Down(bool down) { m_aux2Down = down; }
- // this mostly makes sense in the derived classes such as wxMouseEvent
- void SetState(const wxMouseState& state) { *this = state; }
- // these functions are for compatibility only, they were used in 2.8
- // version of wxMouseState but their names are confusing as wxMouseEvent
- // has methods with the same names which do something quite different so
- // don't use them any more
- #if WXWIN_COMPATIBILITY_2_8
- wxDEPRECATED_INLINE(bool LeftDown() const, return LeftIsDown(); )
- wxDEPRECATED_INLINE(bool MiddleDown() const, return MiddleIsDown(); )
- wxDEPRECATED_INLINE(bool RightDown() const, return RightIsDown(); )
- #endif // WXWIN_COMPATIBILITY_2_8
- // for compatibility reasons these variables are public as the code using
- // wxMouseEvent often uses them directly -- however they should not be
- // accessed directly in this class, use the accessors above instead
- // private:
- bool m_leftDown : 1;
- bool m_middleDown : 1;
- bool m_rightDown : 1;
- bool m_aux1Down : 1;
- bool m_aux2Down : 1;
- wxCoord m_x,
- m_y;
- };
- #endif // _WX_MOUSESTATE_H_
|