]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Ignore sequences of mapping/unmapping windows to avoid getting enter_notifies
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 2 Jul 2010 18:33:26 +0000 (20:33 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 2 Jul 2010 18:33:26 +0000 (20:33 +0200)
src/x.c

diff --git a/src/x.c b/src/x.c
index f0a34d3bf466c3aba5aa803562207f23f8a57c23..9df33e514336b2193b29aeedec2f3d7e0ac91874 100644 (file)
--- 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;
     }