#define _WX_EVENT_H__
#include "wx/defs.h"
+#include "wx/cpp.h"
#include "wx/object.h"
#include "wx/clntdata.h"
typedef int wxEventType;
+#define wxEVT_ANY ((wxEventType)-1)
+
// this is used to make the event table entry type safe, so that for an event
// handler only a function with proper parameter list can be given.
#define wxStaticCastEvent(type, val) wx_static_cast(type, val)
#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
wxEventTableEntry(type, winid, idLast, fn, obj)
-#define EMPTY_PARAMETER_VALUE /* Fake macro parameter value */
-
#define BEGIN_DECLARE_EVENT_TYPES()
#define END_DECLARE_EVENT_TYPES()
#define DECLARE_EXPORTED_EVENT_TYPE(expdecl, name, value) \
#define DECLARE_EVENT_TYPE(name, value) \
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, name, value)
#define DECLARE_LOCAL_EVENT_TYPE(name, value) \
- DECLARE_EXPORTED_EVENT_TYPE(EMPTY_PARAMETER_VALUE, name, value)
+ DECLARE_EXPORTED_EVENT_TYPE(wxEMPTY_PARAMETER_VALUE, name, value)
#define DEFINE_EVENT_TYPE(name) const wxEventType name = wxNewEventType();
#define DEFINE_LOCAL_EVENT_TYPE(name) DEFINE_EVENT_TYPE(name)
DECLARE_NO_COPY_CLASS(wxPropagateOnce)
};
+
#if wxUSE_GUI
// should occur for each delta.
int GetWheelDelta() const { return m_wheelDelta; }
+ // Gets the axis the wheel operation concerns, 0 being the y axis as on
+ // most mouse wheels, 1 is the x axis for things like MightyMouse scrolls
+ // or horizontal trackpad scrolling
+ int GetWheelAxis() const { return m_wheelAxis; }
+
// Returns the configured number of lines (or whatever) to be scrolled per
// wheel action. Defaults to one.
int GetLinesPerAction() const { return m_linesPerAction; }
-
+
// Is the system set to do page scrolling?
bool IsPageScroll() const { return ((unsigned int)m_linesPerAction == UINT_MAX); }
bool m_shiftDown;
bool m_altDown;
bool m_metaDown;
-
+
+ int m_wheelAxis;
int m_wheelRotation;
int m_wheelDelta;
int m_linesPerAction;
virtual bool ProcessEvent(wxEvent& event);
// add an event to be processed later
- void AddPendingEvent(wxEvent& event);
+ virtual void AddPendingEvent(wxEvent& event);
void ProcessPendingEvents();
void SetClientData( void *data ) { DoSetClientData(data); }
void *GetClientData() const { return DoGetClientData(); }
- // reentrance guard
- void AllowReentrance( bool allow = true ) { m_reentranceAllowed = allow; }
- bool IsReentranceAllowed() { return m_reentranceAllowed; }
- bool IsEventHandlingInProgress() { return m_eventHandlingInProgress; }
-
// check if the given event table entry matches this event and call the
// handler if it does
//
# endif
#endif
- bool m_reentranceAllowed; // Reentrance is allowed for this handler?
- bool m_eventHandlingInProgress; // Eventhandling is in progress?
-
// Is event handler enabled?
bool m_enabled;
#if wxUSE_GUI
+// ----------------------------------------------------------------------------
+// wxEventBlocker: helper class to temporarily disable event handling for a window
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxEventBlocker : public wxEvtHandler
+{
+public:
+ wxEventBlocker(wxWindow *win, wxEventType type = wxEVT_ANY);
+ virtual ~wxEventBlocker();
+
+ void Block(wxEventType type)
+ {
+ m_eventsToBlock.push_back(type);
+ }
+
+ virtual bool ProcessEvent(wxEvent& event);
+
+protected:
+ wxArrayInt m_eventsToBlock;
+ wxWindow *m_window;
+
+ DECLARE_NO_COPY_CLASS(wxEventBlocker)
+};
+
typedef void (wxEvtHandler::*wxCommandEventFunction)(wxCommandEvent&);
typedef void (wxEvtHandler::*wxScrollEventFunction)(wxScrollEvent&);
typedef void (wxEvtHandler::*wxScrollWinEventFunction)(wxScrollWinEvent&);