From: Michael Stapelberg Date: Tue, 1 Feb 2011 15:08:47 +0000 (+0100) Subject: Don’t create a split container if no other cons are on a workspace (Thanks mseed) X-Git-Tag: tree-pr2~69 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=dad7c0da00226ccaa97c1ba7a602c152fd65ccbb;p=i3%2Fi3 Don’t create a split container if no other cons are on a workspace (Thanks mseed) This fixes #306. --- diff --git a/src/tree.c b/src/tree.c index ed953b34..165e1516 100644 --- a/src/tree.c +++ b/src/tree.c @@ -396,6 +396,20 @@ void tree_move(char way, orientation_t orientation) { if (TAILQ_EMPTY(&(parent->nodes_head))) break; + /* Check if there are any other cons at all. If not, there is no + * point in creating a new split con and changing workspace + * orientation. Instead, the operation is a no-op. */ + Con *child; + bool other_container = false; + TAILQ_FOREACH(child, &(parent->nodes_head), nodes) + if (child != focused) + other_container = true; + + if (!other_container) { + DLOG("No other container found, we are not creating this split container.\n"); + return; + } + /* 1: create a new split container */ Con *new = con_new(NULL); new->parent = parent; @@ -410,7 +424,6 @@ void tree_move(char way, orientation_t orientation) { /* 3: move the existing cons of this workspace below the new con */ DLOG("Moving cons\n"); - Con *child; while (!TAILQ_EMPTY(&(parent->nodes_head))) { child = TAILQ_FIRST(&(parent->nodes_head)); con_detach(child);