wxEVT_NC_RIGHT_DCLICK,
*/
-// the symbolic names for the mouse buttons
-enum
-{
- 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
-};
-
class WXDLLIMPEXP_CORE wxMouseEvent : public wxEvent,
public wxMouseState
{
// Was it a up event from this (or any) button?
bool ButtonUp(int but = wxMOUSE_BTN_ANY) const;
- // Was the given button?
+ // Was this event generated by the given button?
bool Button(int but) const;
- // Was the given button in Down state?
- bool ButtonIsDown(int but) const;
-
// Get the button which is changing state (wxMOUSE_BTN_NONE if none)
int GetButton() const;
bool Aux1DClick() const { return (m_eventType == wxEVT_AUX1_UP); }
bool Aux2DClick() const { return (m_eventType == wxEVT_AUX2_UP); }
- // Find the current state of the mouse buttons (regardless
- // of current event type)
- 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; }
-
// True if a button is down and the mouse is moving
bool Dragging() const
{
// Returns the number of mouse clicks associated with this event.
int GetClickCount() const { return m_clickCount; }
-
- // Find the position of the event
- void GetPosition(wxCoord *xpos, wxCoord *ypos) const
- {
- if (xpos)
- *xpos = m_x;
- if (ypos)
- *ypos = m_y;
- }
-
- void GetPosition(long *xpos, long *ypos) const
- {
- if (xpos)
- *xpos = (long)m_x;
- if (ypos)
- *ypos = (long)m_y;
- }
-
- // Find the position of the event
- wxPoint GetPosition() const { return wxPoint(m_x, m_y); }
-
// Find the logical position of the event given the DC
wxPoint GetLogicalPosition(const wxDC& dc) const;
- // Get X position
- wxCoord GetX() const { return m_x; }
-
- // Get Y position
- wxCoord GetY() const { return m_y; }
-
// Get wheel rotation, positive or negative indicates direction of
// rotation. Current devices all send an event when rotation is equal to
// +/-WheelDelta, but this allows for finer resolution devices to be
}
public:
- wxCoord m_x, m_y;
-
- bool m_leftDown;
- bool m_middleDown;
- bool m_rightDown;
- bool m_aux1Down;
- bool m_aux2Down;
-
int m_clickCount;
int m_wheelAxis;
#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
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 LeftDown() const { return m_leftDown; }
- bool MiddleDown() const { return m_middleDown; }
- bool RightDown() const { return m_rightDown; }
- bool Aux1Down() const { return m_aux1Down; }
- bool Aux2Down() const { return m_aux2Down; }
+ 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 )
+ {
+ default:
+ wxFAIL_MSG(wxT("invalid parameter in wxMouseState::ButtonIsDown"));
+ // fall through
+
+ 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();
+ }
+ }
+
// 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 SetAux1Down(bool down) { m_aux1Down = down; }
void SetAux2Down(bool down) { m_aux2Down = down; }
-private:
+ // this mostly makes sense in the derived classes such as wxMouseEvent
+ void SetState(const wxMouseState& state) { *this = state; }
+
+
+ // 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;
left the window and the state variables for it may have changed during this time.
@note Note the difference between methods like wxMouseEvent::LeftDown and
- wxMouseEvent::LeftIsDown: the former returns @true when the event corresponds
- to the left mouse button click while the latter returns @true if the left
- mouse button is currently being pressed. For example, when the user is dragging
- the mouse you can use wxMouseEvent::LeftIsDown to test whether the left mouse
- button is (still) depressed. Also, by convention, if wxMouseEvent::LeftDown
- returns @true, wxMouseEvent::LeftIsDown will also return @true in wxWidgets
- whatever the underlying GUI behaviour is (which is platform-dependent).
- The same applies, of course, to other mouse buttons as well.
+ the inherited wxMouseState::LeftIsDown: the former returns @true when
+ the event corresponds to the left mouse button click while the latter
+ returns @true if the left mouse button is currently being pressed.
+ For example, when the user is dragging the mouse you can use
+ wxMouseEvent::LeftIsDown to test whether the left mouse button is
+ (still) depressed. Also, by convention, if wxMouseEvent::LeftDown
+ returns @true, wxMouseEvent::LeftIsDown will also return @true in
+ wxWidgets whatever the underlying GUI behaviour is (which is
+ platform-dependent). The same applies, of course, to other mouse
+ buttons as well.
@beginEventTable{wxMouseEvent}
*/
bool Aux1Down() const;
- /**
- Returns @true if the first extra button mouse button is currently down,
- independent of the current event type.
- */
- bool Aux1IsDown() const;
-
/**
Returns @true if the first extra button mouse button changed to up.
*/
*/
bool Aux2Down() const;
- /**
- Returns @true if the second extra button mouse button is currently down,
- independent of the current event type.
- */
- bool Aux2IsDown() const;
-
/**
Returns @true if the second extra button mouse button changed to up.
*/
bool Aux2Up() const;
/**
- Returns @true if the identified mouse button is changing state.
- Valid values of @a button are:
-
- @li @c wxMOUSE_BTN_LEFT: check if left button was pressed
- @li @c wxMOUSE_BTN_MIDDLE: check if middle button was pressed
- @li @c wxMOUSE_BTN_RIGHT: check if right button was pressed
- @li @c wxMOUSE_BTN_AUX1: check if the first extra button was pressed
- @li @c wxMOUSE_BTN_AUX2: check if the second extra button was pressed
- @li @c wxMOUSE_BTN_ANY: check if any button was pressed
+ Returns @true if the event was generated by the specified button.
- @todo introduce wxMouseButton enum
+ @see wxMouseState::ButtoinIsDown()
*/
- bool Button(int button) const;
+ bool Button(wxMouseButton but) const;
/**
If the argument is omitted, this returns @true if the event was a mouse
double click event. Otherwise the argument specifies which double click event
was generated (see Button() for the possible values).
*/
- bool ButtonDClick(int but = wxMOUSE_BTN_ANY) const;
+ bool ButtonDClick(wxMouseButton but = wxMOUSE_BTN_ANY) const;
/**
If the argument is omitted, this returns @true if the event was a mouse
button down event. Otherwise the argument specifies which button-down event
was generated (see Button() for the possible values).
*/
- bool ButtonDown(int = wxMOUSE_BTN_ANY) const;
+ bool ButtonDown(wxMouseButton but = wxMOUSE_BTN_ANY) const;
/**
If the argument is omitted, this returns @true if the event was a mouse
button up event. Otherwise the argument specifies which button-up event
was generated (see Button() for the possible values).
*/
- bool ButtonUp(int = wxMOUSE_BTN_ANY) const;
+ bool ButtonUp(wxMouseButton but = wxMOUSE_BTN_ANY) const;
/**
Returns @true if this was a dragging event (motion while a button is depressed).
*/
wxPoint GetLogicalPosition(const wxDC& dc) const;
- //@{
- /**
- Sets *x and *y to the position at which the event occurred.
- Returns the physical mouse position in pixels.
-
- Note that if the mouse event has been artificially generated from a special
- keyboard combination (e.g. under Windows when the "menu" key is pressed), the
- returned position is ::wxDefaultPosition.
- */
- wxPoint GetPosition() const;
- void GetPosition(wxCoord* x, wxCoord* y) const;
- void GetPosition(long* x, long* y) const;
- //@}
-
/**
Get wheel delta, normally 120.
*/
int GetWheelAxis() const;
- /**
- Returns X coordinate of the physical mouse event position.
- */
- wxCoord GetX() const;
-
- /**
- Returns Y coordinate of the physical mouse event position.
- */
- wxCoord GetY() const;
-
/**
Returns @true if the event was a mouse button event (not necessarily a button
down event - that may be tested using ButtonDown()).
*/
bool LeftDown() const;
- /**
- Returns @true if the left mouse button is currently down, independent
- of the current event type.
-
- Please notice that it is not the same as LeftDown() which returns @true if the
- event was generated by the left mouse button being pressed. Rather, it simply
- describes the state of the left mouse button at the time when the event was
- generated (so while it will be @true for a left click event, it can also be @true
- for a right click if it happened while the left mouse button was pressed).
-
- This event is usually used in the mouse event handlers which process "move
- mouse" messages to determine whether the user is (still) dragging the mouse.
- */
- bool LeftIsDown() const;
-
/**
Returns @true if the left mouse button changed to up.
*/
*/
bool MiddleDown() const;
- /**
- Returns @true if the middle mouse button is currently down, independent
- of the current event type.
- */
- bool MiddleIsDown() const;
-
/**
Returns @true if the middle mouse button changed to up.
*/
*/
bool RightDown() const;
- /**
- Returns @true if the right mouse button is currently down, independent
- of the current event type.
- */
- bool RightIsDown() const;
-
/**
Returns @true if the right mouse button changed to up.
*/
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
+/// Symbolic names for the mouse buttons.
+enum wxMouseButton
+{
+ /// Any mouse button, means to check for any button being pressed for
+ /// example.
+ wxMOUSE_BTN_ANY = -1,
+
+ /// None of the mouse buttons.
+ wxMOUSE_BTN_NONE = 0,
+
+ /// Left mouse button.
+ wxMOUSE_BTN_LEFT = 1,
+
+ /// Middle mouse button.
+ wxMOUSE_BTN_MIDDLE = 2,
+
+ /// Right mouse button.
+ wxMOUSE_BTN_RIGHT = 3,
+
+ /// First additional mouse button.
+ wxMOUSE_BTN_AUX1 = 4,
+
+ /// Second additional mouse button.
+ wxMOUSE_BTN_AUX2 = 5,
+
+ wxMOUSE_BTN_MAX
+};
+
/**
@class wxMouseState
/**
Returns the physical mouse position.
*/
+ //@{
wxPoint GetPosition() const;
+ void GetPosition(int *x, int *y) const;
+ //@}
/**
- Returns @true if the left mouse button changed to down.
+ Returns @true if the left mouse button is currently down.
*/
- bool LeftDown() const;
+ bool LeftIsDown() const;
/**
- Returns @true if the middle mouse button changed to down.
+ Returns @true if the middle mouse button is currently down.
*/
- bool MiddleDown() const;
+ bool MiddleIsDown() const;
/**
- Returns @true if the right mouse button changed to down.
+ Returns @true if the right mouse button is currently down.
*/
- bool RightDown() const;
+ bool RightIsDown() const;
/**
- Returns @true if the first extra button mouse button changed to down.
+ Returns @true if the first extra button mouse button is currently down.
*/
- bool Aux1Down() const;
+ bool Aux1IsDown() const;
/**
- Returns @true if the second extra button mouse button changed to down.
+ Returns @true if the second extra button mouse button is currently down.
*/
- bool Aux2Down() const;
+ bool Aux2IsDown() const;
};
}
}
-bool wxMouseEvent::ButtonIsDown(int but) const
-{
- switch (but)
- {
- default:
- wxFAIL_MSG(wxT("invalid parameter in wxMouseEvent::ButtonIsDown"));
- // fall through
-
- case wxMOUSE_BTN_ANY:
- return LeftIsDown() || MiddleIsDown() || RightIsDown() || Aux1Down() || Aux2Down();
-
- 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();
- }
-}
-
int wxMouseEvent::GetButton() const
{
for ( int i = 1; i < wxMOUSE_BTN_MAX; i++ )