]> git.sur5r.net Git - i3/i3/commitdiff
Correctly restore focus when restarting (Thanks fernandotcl)
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 28 Nov 2010 13:27:44 +0000 (14:27 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 28 Nov 2010 13:27:44 +0000 (14:27 +0100)
src/load_layout.c
src/tree.c

index ae957bc62fe937fa519fd08da50be8a290ad45ab..b46485f951dc2427a7928bc8ff037582245289c4 100644 (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);
 }
index 15799254a352f241f924d14d5c12add2fa4b202e..846caf477443fc2014c3a30e58d09b2a6e899137 100644 (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;
 }