X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fdispatch.c;h=f65a723afdbda38d0538ab42bd97fcc7dada436a;hb=21c1cd4cb68659d3206056881be5bc15e6c00ae9;hp=c710dec73bc55284c6f03b8756ff340c09b0bda1;hpb=9b33f7ded69e22ad18169c45b6b340dcb348e072;p=chaz%2Fopenbox 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 @@ -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) {