Merge branch 'fix-flattening'
This commit is contained in:
commit
0fbc40ff5f
|
@ -702,6 +702,8 @@ void tree_flatten(Con *con) {
|
||||||
* the con’s parent to be redundant */
|
* the con’s parent to be redundant */
|
||||||
if (!con_is_split(con) ||
|
if (!con_is_split(con) ||
|
||||||
!con_is_split(child) ||
|
!con_is_split(child) ||
|
||||||
|
(con->layout != L_SPLITH && con->layout != L_SPLITV) ||
|
||||||
|
(child->layout != L_SPLITH && child->layout != L_SPLITV) ||
|
||||||
con_orientation(con) == con_orientation(child) ||
|
con_orientation(con) == con_orientation(child) ||
|
||||||
con_orientation(child) != con_orientation(parent))
|
con_orientation(child) != con_orientation(parent))
|
||||||
goto recurse;
|
goto recurse;
|
||||||
|
|
|
@ -38,4 +38,38 @@ my $ws = get_ws($tmp);
|
||||||
is($ws->{layout}, 'splith', 'workspace layout is splith');
|
is($ws->{layout}, 'splith', 'workspace layout is splith');
|
||||||
is(@{$ws->{nodes}}, 3, 'all three windows on workspace level');
|
is(@{$ws->{nodes}}, 3, 'all three windows on workspace level');
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Ticket #1053 provides a sequence of operations where the flattening does not
|
||||||
|
# work correctly:
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
$tmp = fresh_workspace;
|
||||||
|
|
||||||
|
my $tab1 = open_window;
|
||||||
|
my $tab2 = open_window;
|
||||||
|
$mid = open_window;
|
||||||
|
$right = open_window;
|
||||||
|
cmd 'focus right';
|
||||||
|
cmd 'split v';
|
||||||
|
cmd 'focus right';
|
||||||
|
cmd 'move left';
|
||||||
|
cmd 'layout tabbed';
|
||||||
|
cmd 'focus parent';
|
||||||
|
cmd 'split v';
|
||||||
|
|
||||||
|
$ws = get_ws($tmp);
|
||||||
|
my @nodes = @{$ws->{nodes}};
|
||||||
|
is(@nodes, 3, 'all three windows on workspace level');
|
||||||
|
is($nodes[0]->{layout}, 'splitv', 'first node is splitv');
|
||||||
|
is(@{$nodes[0]->{nodes}}, 1, 'one node in the first node');
|
||||||
|
is($nodes[0]->{nodes}->[0]->{layout}, 'tabbed', 'tabbed layout');
|
||||||
|
is(@{$nodes[0]->{nodes}->[0]->{nodes}}, 2, 'two nodes in that node');
|
||||||
|
|
||||||
|
cmd 'focus right';
|
||||||
|
cmd 'move left';
|
||||||
|
|
||||||
|
$ws = get_ws($tmp);
|
||||||
|
@nodes = @{$ws->{nodes}};
|
||||||
|
is(@nodes, 2, 'all three windows on workspace level');
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
Loading…
Reference in New Issue