diff --git a/src/load_layout.c b/src/load_layout.c index ae957bc6..b46485f9 100644 --- a/src/load_layout.c +++ b/src/load_layout.c @@ -12,6 +12,7 @@ static char *last_key; static Con *json_node; +static Con *to_focus; static bool parsing_swallows; static bool parsing_rect; struct Match *current_swallow; @@ -94,6 +95,9 @@ static int json_int(void *ctx, long val) { if (strcasecmp(last_key, "fullscreen_mode") == 0) { json_node->fullscreen_mode = val; } + if (strcasecmp(last_key, "focused") == 0) { + to_focus = json_node; + } if (parsing_rect) { if (strcasecmp(last_key, "x") == 0) @@ -154,6 +158,7 @@ void tree_append_json(const char *filename) { hand = yajl_alloc(&callbacks, NULL, NULL, (void*)g); yajl_status stat; json_node = focused; + to_focus = NULL; setlocale(LC_NUMERIC, "C"); stat = yajl_parse(hand, (const unsigned char*)buf, n); if (stat != yajl_status_ok && @@ -168,5 +173,6 @@ void tree_append_json(const char *filename) { yajl_parse_complete(hand); fclose(f); - //con_focus(json_node); + if (to_focus) + con_focus(to_focus); } diff --git a/src/tree.c b/src/tree.c index 15799254..846caf47 100644 --- a/src/tree.c +++ b/src/tree.c @@ -44,7 +44,6 @@ bool tree_restore() { printf("out = %p\n", out); Con *ws = TAILQ_FIRST(&(out->nodes_head)); printf("ws = %p\n", ws); - con_focus(ws); return true; }