X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Feventdispatcher.hh;h=03f362993628cd7ed4367b68d1248b358d251e8b;hb=a527c30f115022d92e35b1e0754d594dab55fca7;hp=28741d95bff9d942d46689501a371385824e0c92;hpb=1d897f432e54400cb2a0e1499712782b336fd728;p=chaz%2Fopenbox diff --git a/otk/eventdispatcher.hh b/otk/eventdispatcher.hh index 28741d95..03f36299 100644 --- a/otk/eventdispatcher.hh +++ b/otk/eventdispatcher.hh @@ -1,3 +1,4 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- #ifndef __eventdispatcher #define __eventdispatcher @@ -7,29 +8,43 @@ namespace otk { -typedef std::map OtkEventMap; +typedef std::map EventMap; -class OtkEventDispatcher { +class EventDispatcher { public: - OtkEventDispatcher(); - virtual ~OtkEventDispatcher(); + EventDispatcher(); + virtual ~EventDispatcher(); virtual void clearAllHandlers(void); - virtual void registerHandler(Window id, OtkEventHandler *handler); + virtual void registerHandler(Window id, EventHandler *handler); virtual void clearHandler(Window id); virtual void dispatchEvents(void); - inline void setFallbackHandler(OtkEventHandler *fallback) + inline void setFallbackHandler(EventHandler *fallback) { _fallback = fallback; } - OtkEventHandler *getFallbackHandler(void) const { return _fallback; } + EventHandler *getFallbackHandler(void) const { return _fallback; } + //! Sets an event handler that gets all events for all handlers after + //! any specific handlers have received them + inline void setMasterHandler(EventHandler *master) + { _master = master; } + EventHandler *getMasterHandler(void) const { return _master; } + + EventHandler *findHandler(Window win); + + inline Time lastTime() const { return _lasttime; } + private: - OtkEventMap _map; - OtkEventHandler *_fallback; + EventMap _map; + EventHandler *_fallback; + EventHandler *_master; //! The time at which the last XEvent with a time was received - Time _lasttime; // XXX: store this! also provide an accessor! + Time _lasttime; + + void dispatch(Window win, const XEvent &e); + void dispatchFocus(const XEvent &e); }; }