properly serialize floating/scratchpad state when restarting
This commit is contained in:
parent
ec7ed75c01
commit
91499ed2c7
16
src/ipc.c
16
src/ipc.c
|
@ -274,6 +274,22 @@ void dump_node(yajl_gen gen, struct Con *con, bool inplace_restart) {
|
||||||
ystr("fullscreen_mode");
|
ystr("fullscreen_mode");
|
||||||
y(integer, con->fullscreen_mode);
|
y(integer, con->fullscreen_mode);
|
||||||
|
|
||||||
|
ystr("floating");
|
||||||
|
switch (con->floating) {
|
||||||
|
case FLOATING_AUTO_OFF:
|
||||||
|
ystr("auto_off");
|
||||||
|
break;
|
||||||
|
case FLOATING_AUTO_ON:
|
||||||
|
ystr("auto_on");
|
||||||
|
break;
|
||||||
|
case FLOATING_USER_OFF:
|
||||||
|
ystr("user_off");
|
||||||
|
break;
|
||||||
|
case FLOATING_USER_ON:
|
||||||
|
ystr("user_on");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
ystr("swallows");
|
ystr("swallows");
|
||||||
y(array_open);
|
y(array_open);
|
||||||
Match *match;
|
Match *match;
|
||||||
|
|
|
@ -156,6 +156,28 @@ static int json_string(void *ctx, const unsigned char *val, unsigned int len) {
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
sasprintf(&buf, "%.*s", (int)len, val);
|
sasprintf(&buf, "%.*s", (int)len, val);
|
||||||
json_node->mark = buf;
|
json_node->mark = buf;
|
||||||
|
} else if (strcasecmp(last_key, "floating") == 0) {
|
||||||
|
char *buf = NULL;
|
||||||
|
sasprintf(&buf, "%.*s", (int)len, val);
|
||||||
|
if (strcasecmp(buf, "auto_off") == 0)
|
||||||
|
json_node->floating = FLOATING_AUTO_OFF;
|
||||||
|
else if (strcasecmp(buf, "auto_on") == 0)
|
||||||
|
json_node->floating = FLOATING_AUTO_ON;
|
||||||
|
else if (strcasecmp(buf, "user_off") == 0)
|
||||||
|
json_node->floating = FLOATING_USER_OFF;
|
||||||
|
else if (strcasecmp(buf, "user_on") == 0)
|
||||||
|
json_node->floating = FLOATING_USER_ON;
|
||||||
|
free(buf);
|
||||||
|
} else if (strcasecmp(last_key, "scratchpad_state") == 0) {
|
||||||
|
char *buf = NULL;
|
||||||
|
sasprintf(&buf, "%.*s", (int)len, val);
|
||||||
|
if (strcasecmp(buf, "none") == 0)
|
||||||
|
json_node->scratchpad_state = SCRATCHPAD_NONE;
|
||||||
|
else if (strcasecmp(buf, "fresh") == 0)
|
||||||
|
json_node->scratchpad_state = SCRATCHPAD_FRESH;
|
||||||
|
else if (strcasecmp(buf, "changed") == 0)
|
||||||
|
json_node->scratchpad_state = SCRATCHPAD_CHANGED;
|
||||||
|
free(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -46,6 +46,7 @@ my $expected = {
|
||||||
swallows => $ignore,
|
swallows => $ignore,
|
||||||
percent => undef,
|
percent => undef,
|
||||||
layout => 'default',
|
layout => 'default',
|
||||||
|
floating => 'auto_off',
|
||||||
scratchpad_state => 'none',
|
scratchpad_state => 'none',
|
||||||
focus => $ignore,
|
focus => $ignore,
|
||||||
focused => JSON::XS::false,
|
focused => JSON::XS::false,
|
||||||
|
|
Loading…
Reference in New Issue