From 20b1fd4293b496341523686e93312f6ee73e1df8 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 30 Mar 2011 23:00:48 +0200 Subject: [PATCH] Skip FocusIn events with mode == NOTIFY_MODE_GRAB or NOTIFY_MODE_UNGRAB According to the Xlib Programming Manual section 10.7.2 [1], these events are generated when keyboard grabs activate/deactivate, while we are only interested in focus changes which are done by other programs independend from the keyboard. [1] http://tronche.com/gui/x/xlib/events/input-focus/grab.html --- src/handlers.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/handlers.c b/src/handlers.c index f1c6128b..ac0fd87a 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -896,6 +896,12 @@ static int handle_focus_in(xcb_focus_in_event_t *event) { return 1; DLOG("That is con %p / %s\n", con, con->name); + if (event->mode == XCB_NOTIFY_MODE_GRAB || + event->mode == XCB_NOTIFY_MODE_UNGRAB) { + DLOG("FocusIn event for grab/ungrab, ignoring\n"); + return 1; + } + if (event->detail == XCB_NOTIFY_DETAIL_POINTER) { DLOG("notify detail is pointer, ignoring this event\n"); return 1; -- 2.39.5