]> git.sur5r.net Git - i3/i3/commitdiff
x: recurse x_push_node in focus order. reduces flickering when switching workspaces
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 1 Apr 2011 18:40:32 +0000 (20:40 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 1 Apr 2011 18:40:32 +0000 (20:40 +0200)
src/x.c

diff --git a/src/x.c b/src/x.c
index 826d2134aa3789e4bc50baf11d09e0e0e29cb139..8aad722a9dea317ab87075e174071faa1587da0a 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -575,11 +575,10 @@ static void x_push_node(Con *con) {
         fake_absolute_configure_notify(con);
     }
 
-    /* handle all children and floating windows of this node */
-    TAILQ_FOREACH(current, &(con->nodes_head), nodes)
-        x_push_node(current);
-
-    TAILQ_FOREACH(current, &(con->floating_head), floating_windows)
+    /* Handle all children and floating windows of this node. We recurse
+     * in focus order to display the focused client in a stack first when
+     * switching workspaces (reduces flickering). */
+    TAILQ_FOREACH(current, &(con->focus_head), focused)
         x_push_node(current);
 
     if (con->type != CT_ROOT && con->type != CT_OUTPUT)