summaryrefslogtreecommitdiff
path: root/openbox/dispatch.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-17 20:16:32 +0000
committerDana Jansens <danakj@orodu.net>2003-03-17 20:16:32 +0000
commit75b07a2bb3b98d581b39d3991cf1e9068452264a (patch)
tree564d2659f98758759036f96f779d854092772bea /openbox/dispatch.c
parent033bd73e7e80c13af0a7724f7f48eda0a7410e65 (diff)
all events are dispatched
Diffstat (limited to 'openbox/dispatch.c')
-rw-r--r--openbox/dispatch.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/openbox/dispatch.c b/openbox/dispatch.c
index c710dec7..f65a723a 100644
--- a/openbox/dispatch.c
+++ b/openbox/dispatch.c
@@ -1,4 +1,5 @@
#include "dispatch.h"
+#include "extensions.h"
#include <glib.h>
@@ -26,8 +27,10 @@ void dispatch_shutdown()
guint i;
EventType j;
- for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1)
+ for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1) {
g_slist_free(funcs[i]);
+ funcs[i] = NULL;
+ }
g_free(funcs);
}
@@ -47,7 +50,7 @@ void dispatch_register(EventHandler h, EventMask mask)
}
}
-void dispatch_x(XEvent *xe)
+void dispatch_x(XEvent *xe, Client *c)
{
EventType e;
guint i;
@@ -77,11 +80,20 @@ void dispatch_x(XEvent *xe)
e = Event_X_MotionNotify;
break;
default:
+ /* XKB events */
+ if (xe->type == extensions_xkb_event_basep) {
+ switch (((XkbAnyEvent*)&e)->xkb_type) {
+ case XkbBellNotify:
+ e = Event_X_Bell;
+ break;
+ }
+ }
return;
}
obe.type = e;
- obe.data.x = xe;
+ obe.data.x.e = xe;
+ obe.data.x.client = c;
i = 0;
while (e > 1) {