Bugfix: Properly split when the current container is alone within a stacked/tabbed con (+test) (Thanks aksr)
Fixes: #630
This commit is contained in:
parent
b5d8ed1bed
commit
0fc459892e
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue