From: Michael Stapelberg Date: Wed, 30 Mar 2011 21:00:48 +0000 (+0200) Subject: Skip FocusIn events with mode == NOTIFY_MODE_GRAB or NOTIFY_MODE_UNGRAB X-Git-Tag: tree-pr3~87 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=20b1fd4293b496341523686e93312f6ee73e1df8;p=i3%2Fi3 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 --- 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;