From 3383437705ad1979863dcb60a7138dd8471e3787 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Thu, 27 Jan 2011 16:08:25 +0100 Subject: [PATCH] refactor some places to use con_descend_focused instead of duplicating code --- src/con.c | 8 ++------ src/handlers.c | 5 +---- src/randr.c | 7 +------ src/tree.c | 16 ++++------------ src/workspace.c | 6 +----- 5 files changed, 9 insertions(+), 33 deletions(-) diff --git a/src/con.c b/src/con.c index 2f02bfcd..50e303ca 100644 --- a/src/con.c +++ b/src/con.c @@ -483,12 +483,8 @@ void con_move_to_workspace(Con *con, Con *workspace) { * 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) diff --git a/src/handlers.c b/src/handlers.c index 3fc18cf5..4123caee 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -210,11 +210,8 @@ int handle_enter_notify(void *ignored, xcb_connection_t *conn, 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; diff --git a/src/randr.c b/src/randr.c index f6e925a9..e8b044bb 100644 --- a/src/randr.c +++ b/src/randr.c @@ -621,12 +621,7 @@ void randr_query_outputs() { 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 */ diff --git a/src/tree.c b/src/tree.c index 0a18e88d..9af64def 100644 --- a/src/tree.c +++ b/src/tree.c @@ -155,11 +155,8 @@ void tree_close(Con *con, bool kill_window, bool dont_kill_parent) { 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); @@ -361,11 +358,7 @@ void tree_next(char way, orientation_t orientation) { /* 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)); } /* @@ -450,8 +443,7 @@ void tree_move(char way, orientation_t orientation) { 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); } } diff --git a/src/workspace.c b/src/workspace.c index a1e653ea..55f7dd17 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -226,11 +226,7 @@ void workspace_show(const char *num) { 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 */