From 8de9c8caf5e0ee78880cca2578dd6d71282d2895 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 10 May 2016 18:32:27 -0400 Subject: make sure we only grab events for our window --- src/window-xlib.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/window-xlib.c b/src/window-xlib.c index dce54ef..ad0e689 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -87,6 +87,8 @@ static struct function_key application_cursor_keys[] = { #undef RUNES_KEY static void runes_window_backend_get_next_event(void *t); +static Bool runes_window_backend_wants_event( + Display *dpy, XEvent *event, XPointer arg); static int runes_window_backend_process_event(void *t); static Bool runes_window_backend_find_flush_events( Display *dpy, XEvent *e, XPointer arg); @@ -391,7 +393,18 @@ static void runes_window_backend_get_next_event(void *t) { RunesWindowBackend *w = ((RunesTerm *)t)->w; - XNextEvent(w->wg->dpy, &w->event); + XIfEvent(w->wg->dpy, &w->event, runes_window_backend_wants_event, t); +} + +static Bool runes_window_backend_wants_event( + Display *dpy, XEvent *event, XPointer arg) +{ + RunesWindowBackend *w = ((RunesTerm *)arg)->w; + Window event_window = ((XAnyEvent*)event)->window; + + UNUSED(dpy); + + return event_window == w->w || event_window == w->border_w; } static int runes_window_backend_process_event(void *t) -- cgit v1.2.3-54-g00ecf