]> git.sur5r.net Git - i3/i3/commitdiff
allow parsing multiple nodes from a json layout
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 14 Dec 2013 15:25:54 +0000 (16:25 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 22 Dec 2013 20:52:49 +0000 (21:52 +0100)
src/load_layout.c
testcases/t/213-layout-restore-simple.t

index d31c230a6ed3931b452dcbcab8639daaf8492678..b69f8ac5116b7ed5d7d9d8faf0edcd023618b67a 100644 (file)
@@ -421,6 +421,8 @@ void tree_append_json(const char *filename) {
 #endif
     /* Allowing comments allows for more user-friendly layout files. */
     yajl_config(hand, yajl_allow_comments, true);
+    /* Allow multiple values, i.e. multiple nodes to attach */
+    yajl_config(hand, yajl_allow_multiple_values, true);
     yajl_status stat;
     json_node = focused;
     to_focus = NULL;
index b10dfdf63469b7929b1f414d506a7dbb4f92479e..d681b8d63e12aca1da1f040483ac47a71e0f6a38 100644 (file)
@@ -63,6 +63,45 @@ is(@{$content[0]->{nodes}}, 2, 'node has two children');
 
 close($fh);
 
+################################################################################
+# two simple vsplit containers in the same file
+################################################################################
+
+$ws = fresh_workspace;
+
+@content = @{get_ws_content($ws)};
+is(@content, 0, 'no nodes on the new workspace yet');
+
+($fh, $filename) = tempfile(UNLINK => 1);
+print $fh <<EOT;
+{
+    "layout": "splitv",
+    "nodes": [
+        {
+        },
+        {
+        }
+    ]
+}
+
+{
+    "layout": "splitv"
+}
+EOT
+$fh->flush;
+cmd "append_layout $filename";
+
+does_i3_live;
+
+@content = @{get_ws_content($ws)};
+is(@content, 2, 'one node on the workspace now');
+is($content[0]->{layout}, 'splitv', 'first node has splitv layout');
+is(@{$content[0]->{nodes}}, 2, 'first node has two children');
+is($content[1]->{layout}, 'splitv', 'second node has splitv layout');
+is(@{$content[1]->{nodes}}, 0, 'first node has no children');
+
+close($fh);
+
 ################################################################################
 # simple vsplit layout with swallow specifications
 ################################################################################