i3-save-tree: only create "swallows" key for leaf nodes (Thanks xeen)

fixes #1149
This commit is contained in:
Michael Stapelberg 2014-01-05 20:10:24 +01:00
parent 2fea5ef82b
commit bb482e2869
1 changed files with 9 additions and 6 deletions

View File

@ -1,7 +1,7 @@
#!/usr/bin/env perl
# vim:ts=4:sw=4:expandtab
#
# © 2013 Michael Stapelberg
# © 2013-2014 Michael Stapelberg
#
# Requires perl ≥ v5.10, AnyEvent::I3 and JSON::XS
@ -149,12 +149,15 @@ sub dump_containers {
say "$ws// $desc with " . @{$tree->{nodes}} . " children";
}
# Turn “window_properties” into “swallows” expressions.
my $swallows = {};
for my $property (keys %{$tree->{window_properties}}) {
$swallows->{$property} = '^' . quotemeta($tree->{window_properties}->{$property}) . '$';
# Turn “window_properties” into “swallows” expressions, but only for leaf
# nodes. It only makes sense for leaf nodes to swallow anything.
if (leaf_node($tree)) {
my $swallows = {};
for my $property (keys %{$tree->{window_properties}}) {
$swallows->{$property} = '^' . quotemeta($tree->{window_properties}->{$property}) . '$';
}
$tree->{swallows} = [ $swallows ];
}
$tree->{swallows} = [ $swallows ];
delete $tree->{window_properties};
my @keys = sort keys %$tree;