From 81044a7104f20148b9926b073b3d45635d84eee5 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 28 Nov 2010 14:27:44 +0100 Subject: [PATCH] Correctly restore focus when restarting (Thanks fernandotcl) --- src/load_layout.c | 8 +++++++- src/tree.c | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) 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; }