Correctly restore focus when restarting (Thanks fernandotcl)

This commit is contained in:
Michael Stapelberg 2010-11-28 14:27:44 +01:00
parent f7fff5cec1
commit 81044a7104
2 changed files with 7 additions and 2 deletions

View File

@ -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);
}

View File

@ -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;
}