* container is moved away */
Con *focus_next = con_next_focused(con);
- /* 2: get the focused container of this workspace by going down as far as
- * possible */
- Con *next = workspace;
-
- while (!TAILQ_EMPTY(&(next->focus_head)))
- next = TAILQ_FIRST(&(next->focus_head));
+ /* 2: get the focused container of this workspace */
+ Con *next = con_descend_focused(workspace);
/* 3: we go up one level, but only when next is a normal container */
if (next->type != CT_WORKSPACE)
if (config.disable_focus_follows_mouse)
return 1;
- Con *next = con;
- while (!TAILQ_EMPTY(&(next->focus_head)))
- next = TAILQ_FIRST(&(next->focus_head));
- con_focus(next);
+ con_focus(con_descend_focused(con));
x_push_changes(croot);
return 1;
continue;
DLOG("Focusing primary output %s\n", output->name);
- Con *next = output->con;
- while (!TAILQ_EMPTY(&(next->focus_head)))
- next = TAILQ_FIRST(&(next->focus_head));
-
- DLOG("focusing %p\n", next);
- con_focus(next);
+ con_focus(con_descend_focused(output->con));
}
/* render_layout flushes */
DLOG("parent container killed\n");
if (con == focused) {
DLOG("This is the focused container, i need to find another one to focus. I start looking at ws = %p\n", ws);
- next = ws;
- /* now go down the focus stack as far as
- * possible, excluding the current container */
- while (!TAILQ_EMPTY(&(next->focus_head)))
- next = TAILQ_FIRST(&(next->focus_head));
+ /* go down the focus stack as far as possible */
+ next = con_descend_focused(ws);
dont_kill_parent = true;
DLOG("Alright, focusing %p\n", next);
/* 3: focus choice comes in here. at the moment we will go down
* until we find a window */
/* TODO: check for window, atm we only go down as far as possible */
- while (!TAILQ_EMPTY(&(next->focus_head)))
- next = TAILQ_FIRST(&(next->focus_head));
-
- DLOG("focusing %p\n", next);
- con_focus(next);
+ con_focus(con_descend_focused(next));
}
/*
next = current;
} else {
/* if this is a split container, we need to go down */
- while (!TAILQ_EMPTY(&(next->focus_head)))
- next = TAILQ_FIRST(&(next->focus_head));
+ next = con_descend_focused(next);
}
}
workspace_reassign_sticky(workspace);
LOG("switching to %p\n", workspace);
- Con *next = workspace;
-
- while (!TAILQ_EMPTY(&(next->focus_head)))
- next = TAILQ_FIRST(&(next->focus_head));
-
+ Con *next = con_descend_focused(workspace);
if (TAILQ_EMPTY(&(old->nodes_head)) && TAILQ_EMPTY(&(old->floating_head))) {
/* check if this workspace is currently visible */