]> icculus.org git repositories - mikachu/openbox.git/blob - otk/eventdispatcher.hh
add click_raise global var
[mikachu/openbox.git] / otk / eventdispatcher.hh
1 #ifndef __eventdispatcher
2 #define __eventdispatcher
3
4 #include "eventhandler.hh"
5 #include <map>
6 #include <utility>
7
8 namespace otk {
9
10 typedef std::map<unsigned int, OtkEventHandler *> OtkEventMap;
11
12 class OtkEventDispatcher {
13 public:
14
15   OtkEventDispatcher();
16   virtual ~OtkEventDispatcher();
17
18   virtual void clearAllHandlers(void);
19   virtual void registerHandler(Window id, otk::OtkEventHandler *handler);
20   virtual void clearHandler(Window id);
21   virtual void dispatchEvents(void);
22
23   inline void setFallbackHandler(otk::OtkEventHandler *fallback)
24   { _fallback = fallback; }
25   otk::OtkEventHandler *getFallbackHandler(void) const { return _fallback; }
26
27   //! Sets an event handler that gets all events for all handlers after
28   //! any specific handlers have received them
29   inline void setMasterHandler(otk::OtkEventHandler *master)
30   { _master = master; }
31   otk::OtkEventHandler *getMasterHandler(void) const { return _master; }
32
33   otk::OtkEventHandler *findHandler(Window win);
34   
35 private:
36   OtkEventMap _map;
37   OtkEventHandler *_fallback;
38   OtkEventHandler *_master;
39   Window _focus;
40   XEvent _focus_e;
41   XEvent _crossing_e;
42
43   //! The time at which the last XEvent with a time was received
44   Time _lasttime; // XXX: store this! also provide an accessor!
45
46   void dispatch(const XEvent &e);
47 };
48
49 }
50
51 #endif