From: Michael Stapelberg Date: Fri, 2 Jul 2010 18:33:26 +0000 (+0200) Subject: Bugfix: Ignore sequences of mapping/unmapping windows to avoid getting enter_notifies X-Git-Tag: tree-pr1~168 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=64306e813e690310ab0fc3e12fbc727f9853258e;p=i3%2Fi3 Bugfix: Ignore sequences of mapping/unmapping windows to avoid getting enter_notifies --- diff --git a/src/x.c b/src/x.c index f0a34d3b..9df33e51 100644 --- a/src/x.c +++ b/src/x.c @@ -226,15 +226,23 @@ static void x_push_node(Con *con) { * container was empty before, but now got a child) */ if (state->mapped != con->mapped || (con->mapped && state->initial)) { if (!con->mapped) { - LOG("unmapping container\n"); - xcb_unmap_window(conn, con->frame); + xcb_void_cookie_t cookie; + cookie = xcb_unmap_window(conn, con->frame); + LOG("unmapping container (serial %d)\n", cookie.sequence); + /* Ignore enter_notifies which are generated when unmapping */ + add_ignore_event(cookie.sequence); } else { + xcb_void_cookie_t cookie; if (state->initial && con->window != NULL) { - LOG("mapping child window\n"); - xcb_map_window(conn, con->window->id); + cookie = xcb_map_window(conn, con->window->id); + LOG("mapping child window (serial %d)\n", cookie.sequence); + /* Ignore enter_notifies which are generated when mapping */ + add_ignore_event(cookie.sequence); } - LOG("mapping container\n"); - xcb_map_window(conn, con->frame); + cookie = xcb_map_window(conn, con->frame); + LOG("mapping container (serial %d)\n", cookie.sequence); + /* Ignore enter_notifies which are generated when mapping */ + add_ignore_event(cookie.sequence); } state->mapped = con->mapped; }