summaryrefslogtreecommitdiff
path: root/obt/xevent.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-07-28 16:14:57 -0400
committerDana Jansens <danakj@orodu.net>2008-01-20 01:36:56 -0500
commit8439c393d8c1dfb7db5cebd57d2e1e084e60234a (patch)
tree345e09bd821d4599132de03b954b69db494392a8 /obt/xevent.c
parent03f45e79b8c92818f116bf92a7388b2f16f80caf (diff)
let you make an xevent listener for all windows
Diffstat (limited to 'obt/xevent.c')
-rw-r--r--obt/xevent.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/obt/xevent.c b/obt/xevent.c
index e770ddae..9732c8f9 100644
--- a/obt/xevent.c
+++ b/obt/xevent.c
@@ -85,7 +85,6 @@ void xevent_set_handler(ObtXEventHandler *h, gint type, Window win,
{
ObtXEventBinding *b;
- g_assert(win);
g_assert(func);
/* make sure we have a spot for the event */
@@ -119,8 +118,14 @@ static void xevent_handler(const XEvent *e, gpointer data)
ObtXEventHandler *h;
ObtXEventBinding *b;
+ h = data;
+
if (e->type < h->num_event_types) {
- h = data;
+ const gint all = OBT_XEVENT_ALL_WINDOWS;
+ /* run the all_windows handler first */
+ b = g_hash_table_lookup(h->bindings[e->xany.type], &all);
+ if (b) b->func(e, b->data);
+ /* then run the per-window handler */
b = g_hash_table_lookup(h->bindings[e->xany.type], &e->xany.window);
if (b) b->func(e, b->data);
}