From b644fb5f26c1768b70c5b49d8cd917a63a2d1d91 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 1 Apr 2011 20:40:32 +0200 Subject: [PATCH] x: recurse x_push_node in focus order. reduces flickering when switching workspaces --- src/x.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/x.c b/src/x.c index 826d2134..8aad722a 100644 --- 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)