]> Dogcows Code - chaz/openbox/blob - otk/eventdispatcher.hh
716a81189eb9ca55b55229303310996dc10d71b6
[chaz/openbox] / 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 XEvent _focus_e;
40
41 //! The time at which the last XEvent with a time was received
42 Time _lasttime; // XXX: store this! also provide an accessor!
43
44 void dispatch(const XEvent &e);
45 };
46
47 }
48
49 #endif
This page took 0.040774 seconds and 3 git commands to generate.