aboutsummaryrefslogtreecommitdiff
path: root/i3-save-tree
diff options
context:
space:
mode:
authorMichael Stapelberg <michael@stapelberg.de>2014-01-05 20:10:24 +0100
committerMichael Stapelberg <michael@stapelberg.de>2014-01-05 20:10:24 +0100
commitbb482e2869dd13e4199815af9ea833ca7dbae7d5 (patch)
tree6cf604e82315b4d4d3f0cbf348e9d828fc85d350 /i3-save-tree
parent2fea5ef82bd3528ed62681f9ac64f45830f4acdf (diff)
downloadi3-bb482e2869dd13e4199815af9ea833ca7dbae7d5.tar.gz
i3-bb482e2869dd13e4199815af9ea833ca7dbae7d5.zip
i3-save-tree: only create "swallows" key for leaf nodes (Thanks xeen)
fixes #1149
Diffstat (limited to 'i3-save-tree')
-rwxr-xr-xi3-save-tree15
1 files changed, 9 insertions, 6 deletions
diff --git a/i3-save-tree b/i3-save-tree
index 6ac3e1b1..53d67e99 100755
--- a/i3-save-tree
+++ b/i3-save-tree
@@ -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;