aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2016-05-10 18:32:27 -0400
committerJesse Luehrs <doy@tozt.net>2016-05-10 18:32:27 -0400
commit8de9c8caf5e0ee78880cca2578dd6d71282d2895 (patch)
tree0a291d2492f386493cd93bf3d9eef138a8f47c25
parent3cfbc305b8c5e713b16d966bb8e8d4e7e35cb52b (diff)
downloadrunes-8de9c8caf5e0ee78880cca2578dd6d71282d2895.tar.gz
runes-8de9c8caf5e0ee78880cca2578dd6d71282d2895.zip
make sure we only grab events for our window
-rw-r--r--src/window-xlib.c15
1 files changed, 14 insertions, 1 deletions
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)