]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Properly split when the current container is alone within a stacked/tabbed...
authorMichael Stapelberg <michael@stapelberg.de>
Mon, 30 Jan 2012 16:13:44 +0000 (16:13 +0000)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 7 Feb 2012 22:42:35 +0000 (17:42 -0500)
Fixes: #630
src/tree.c
testcases/t/122-split.t

index 53993b998164362ad4a64911d42c58cfbed415f0..f5bac1939b0425b84f106d7a6d990323eb31b44f 100644 (file)
@@ -291,7 +291,8 @@ void tree_split(Con *con, orientation_t orientation) {
     /* if we are in a container whose parent contains only one
      * child (its split functionality is unused so far), we just change the
      * orientation (more intuitive than splitting again) */
-    if (con_num_children(parent) == 1) {
+    if (con_num_children(parent) == 1 &&
+        parent->layout == L_DEFAULT) {
         parent->orientation = orientation;
         DLOG("Just changing orientation of existing container\n");
         return;
index 3484c7fc81212ae4db9328d00ea7de6ee61eb086..0dfb99a37afb81f595db415c5e07b35af10bd6a7 100644 (file)
@@ -89,4 +89,25 @@ cmd 'split v';
 my $count = sum_nodes(\@content);
 is($count, $old_count, 'not more windows after splitting again');
 
+######################################################################
+# In the special case of being inside a stacked or tabbed container, we don’t
+# want this to happen.
+######################################################################
+
+$tmp = fresh_workspace;
+
+cmd 'open';
+@content = @{get_ws_content($tmp)};
+is(scalar @content, 1, 'Precisely one container on this ws');
+cmd 'layout stacked';
+@content = @{get_ws_content($tmp)};
+is(scalar @content, 1, 'Still one container on this ws');
+is(scalar @{$content[0]->{nodes}}, 1, 'Stacked con has one child node');
+
+cmd 'split h';
+cmd 'open';
+@content = @{get_ws_content($tmp)};
+is(scalar @content, 1, 'Still one container on this ws');
+is(scalar @{$content[0]->{nodes}}, 1, 'Stacked con still has one child node');
+
 done_testing;