]> git.sur5r.net Git - i3/i3/commitdiff
i3-save-tree: only create "swallows" key for leaf nodes (Thanks xeen)
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 5 Jan 2014 19:10:24 +0000 (20:10 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 5 Jan 2014 19:10:24 +0000 (20:10 +0100)
fixes #1149

i3-save-tree

index 6ac3e1b1a2564b83e3dffa522fc01f9b657b2681..53d67e993d538de05e351a445a5f29c0773ba5d2 100755 (executable)
@@ -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;