GET_TREE: serialize container type into a string
So far, this was blessed for internal use only (by virtue of not being in the documentation), but we want to expose it for the stored layouts.
This commit is contained in:
@ -391,7 +391,7 @@ sub get_workspace_names {
|
||||
for my $output (@outputs) {
|
||||
next if $output->{name} eq '__i3';
|
||||
# get the first CT_CON of each output
|
||||
my $content = first { $_->{type} == 2 } @{$output->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$output->{nodes}};
|
||||
@cons = (@cons, @{$content->{nodes}});
|
||||
}
|
||||
[ map { $_->{name} } @cons ]
|
||||
@ -434,7 +434,7 @@ sub fresh_workspace {
|
||||
@{$tree->{nodes}};
|
||||
die "BUG: Could not find output $args{output}" unless defined($output);
|
||||
# Get the focused workspace on that output and switch to it.
|
||||
my $content = first { $_->{type} == 2 } @{$output->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$output->{nodes}};
|
||||
my $focused = $content->{focus}->[0];
|
||||
my $workspace = first { $_->{id} == $focused } @{$content->{nodes}};
|
||||
$workspace = $workspace->{name};
|
||||
@ -479,7 +479,7 @@ sub get_ws {
|
||||
my @workspaces;
|
||||
for my $output (@outputs) {
|
||||
# get the first CT_CON of each output
|
||||
my $content = first { $_->{type} == 2 } @{$output->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$output->{nodes}};
|
||||
@workspaces = (@workspaces, @{$content->{nodes}});
|
||||
}
|
||||
|
||||
@ -589,13 +589,13 @@ sub get_dock_clients {
|
||||
for my $output (@outputs) {
|
||||
if (!defined($which)) {
|
||||
@docked = (@docked, map { @{$_->{nodes}} }
|
||||
grep { $_->{type} == 5 }
|
||||
grep { $_->{type} eq 'dockarea' }
|
||||
@{$output->{nodes}});
|
||||
} elsif ($which eq 'top') {
|
||||
my $first = first { $_->{type} == 5 } @{$output->{nodes}};
|
||||
my $first = first { $_->{type} eq 'dockarea' } @{$output->{nodes}};
|
||||
@docked = (@docked, @{$first->{nodes}}) if defined($first);
|
||||
} elsif ($which eq 'bottom') {
|
||||
my @matching = grep { $_->{type} == 5 } @{$output->{nodes}};
|
||||
my @matching = grep { $_->{type} eq 'dockarea' } @{$output->{nodes}};
|
||||
my $last = $matching[-1];
|
||||
@docked = (@docked, @{$last->{nodes}}) if defined($last);
|
||||
}
|
||||
@ -645,7 +645,7 @@ sub focused_ws {
|
||||
my $tree = $i3->get_tree->recv;
|
||||
my $focused = $tree->{focus}->[0];
|
||||
my $output = first { $_->{id} == $focused } @{$tree->{nodes}};
|
||||
my $content = first { $_->{type} == 2 } @{$output->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$output->{nodes}};
|
||||
my $first = first { $_->{fullscreen_mode} == 1 } @{$content->{nodes}};
|
||||
return $first->{name}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ my @outputs = @{$tree->{nodes}};
|
||||
my $output;
|
||||
for my $o (@outputs) {
|
||||
# get the first CT_CON of each output
|
||||
my $content = first { $_->{type} == 2 } @{$o->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$o->{nodes}};
|
||||
if (defined(first { $_->{name} eq $tmp } @{$content->{nodes}})) {
|
||||
$output = $o;
|
||||
last;
|
||||
|
@ -51,7 +51,7 @@ my $expected = {
|
||||
window => undef,
|
||||
name => 'root',
|
||||
orientation => $ignore,
|
||||
type => 0,
|
||||
type => 'root',
|
||||
id => $ignore,
|
||||
rect => $ignore,
|
||||
window_rect => $ignore,
|
||||
@ -90,16 +90,16 @@ my @nodes = @{$tree->{nodes}};
|
||||
|
||||
ok(@nodes > 0, 'root node has at least one leaf');
|
||||
|
||||
ok((all { $_->{type} == 1 } @nodes), 'all nodes are of type CT_OUTPUT');
|
||||
ok((all { $_->{type} eq 'output' } @nodes), 'all nodes are of type CT_OUTPUT');
|
||||
ok((none { defined($_->{window}) } @nodes), 'no CT_OUTPUT contains a window');
|
||||
ok((all { @{$_->{nodes}} > 0 } @nodes), 'all nodes have at least one leaf (workspace)');
|
||||
my @workspaces;
|
||||
for my $ws (@nodes) {
|
||||
my $content = first { $_->{type} == 2 } @{$ws->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$ws->{nodes}};
|
||||
@workspaces = (@workspaces, @{$content->{nodes}});
|
||||
}
|
||||
|
||||
ok((all { $_->{type} == 4 } @workspaces), 'all workspaces are of type CT_WORKSPACE');
|
||||
ok((all { $_->{type} eq 'workspace' } @workspaces), 'all workspaces are of type CT_WORKSPACE');
|
||||
#ok((all { @{$_->{nodes}} == 0 } @workspaces), 'all workspaces are empty yet');
|
||||
ok((none { defined($_->{window}) } @workspaces), 'no CT_OUTPUT contains a window');
|
||||
|
||||
|
@ -196,8 +196,7 @@ sub workspace_numbers_sorted {
|
||||
my @outputs = @{$tree->{nodes}};
|
||||
my @workspaces;
|
||||
for my $output (@outputs) {
|
||||
# get the first CT_CON of each output
|
||||
my $content = first { $_->{type} == 2 } @{$output->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$output->{nodes}};
|
||||
@workspaces = (@workspaces, @{$content->{nodes}});
|
||||
}
|
||||
|
||||
|
@ -145,7 +145,7 @@ sub get_output_content {
|
||||
is(scalar @outputs, 1, 'exactly one output (testcase not multi-monitor capable)');
|
||||
my $output = $outputs[0];
|
||||
# get the first (and only) CT_CON
|
||||
return first { $_->{type} == 2 } @{$output->{nodes}};
|
||||
return first { $_->{type} eq 'con' } @{$output->{nodes}};
|
||||
}
|
||||
|
||||
$tmp = fresh_workspace;
|
||||
|
@ -35,7 +35,7 @@ is($tree->{name}, 'root', 'root node is the first thing we get');
|
||||
my @__i3 = grep { $_->{name} eq '__i3' } @{$tree->{nodes}};
|
||||
is(scalar @__i3, 1, 'output __i3 found');
|
||||
|
||||
my $content = first { $_->{type} == 2 } @{$__i3[0]->{nodes}};
|
||||
my $content = first { $_->{type} eq 'con' } @{$__i3[0]->{nodes}};
|
||||
my @workspaces = @{$content->{nodes}};
|
||||
my @workspace_names = map { $_->{name} } @workspaces;
|
||||
ok('__i3_scratch' ~~ @workspace_names, '__i3_scratch workspace found');
|
||||
|
@ -77,10 +77,10 @@ sub workspaces_per_screen {
|
||||
my @outputs = @{$tree->{nodes}};
|
||||
|
||||
my $fake0 = first { $_->{name} eq 'fake-0' } @outputs;
|
||||
my $fake0_content = first { $_->{type} == 2 } @{$fake0->{nodes}};
|
||||
my $fake0_content = first { $_->{type} eq 'con' } @{$fake0->{nodes}};
|
||||
|
||||
my $fake1 = first { $_->{name} eq 'fake-1' } @outputs;
|
||||
my $fake1_content = first { $_->{type} == 2 } @{$fake1->{nodes}};
|
||||
my $fake1_content = first { $_->{type} eq 'con' } @{$fake1->{nodes}};
|
||||
|
||||
my @fake0_workspaces = map { $_->{name} } @{$fake0_content->{nodes}};
|
||||
my @fake1_workspaces = map { $_->{name} } @{$fake1_content->{nodes}};
|
||||
|
@ -37,10 +37,10 @@ sub workspaces_per_screen {
|
||||
my @outputs = @{$tree->{nodes}};
|
||||
|
||||
my $fake0 = first { $_->{name} eq 'fake-0' } @outputs;
|
||||
my $fake0_content = first { $_->{type} == 2 } @{$fake0->{nodes}};
|
||||
my $fake0_content = first { $_->{type} eq 'con' } @{$fake0->{nodes}};
|
||||
|
||||
my $fake1 = first { $_->{name} eq 'fake-1' } @outputs;
|
||||
my $fake1_content = first { $_->{type} == 2 } @{$fake1->{nodes}};
|
||||
my $fake1_content = first { $_->{type} eq 'con' } @{$fake1->{nodes}};
|
||||
|
||||
my @fake0_workspaces = map { $_->{name} } @{$fake0_content->{nodes}};
|
||||
my @fake1_workspaces = map { $_->{name} } @{$fake1_content->{nodes}};
|
||||
|
Reference in New Issue
Block a user