ipc: make 'layout' a string

next
Michael Stapelberg 2011-06-02 17:12:18 +02:00
parent 97e45b9cfc
commit 51bfdbf0a8
3 changed files with 34 additions and 2 deletions

View File

@ -202,7 +202,23 @@ void dump_node(yajl_gen gen, struct Con *con, bool inplace_restart) {
y(integer, (con == focused));
ystr("layout");
y(integer, con->layout);
switch (con->layout) {
case L_DEFAULT:
ystr("default");
break;
case L_STACKED:
ystr("stacked");
break;
case L_TABBED:
ystr("tabbed");
break;
case L_DOCKAREA:
ystr("dockarea");
break;
case L_OUTPUT:
ystr("output");
break;
}
ystr("border");
switch (con->border_style) {

View File

@ -131,6 +131,21 @@ static int json_string(void *ctx, const unsigned char *val, unsigned int len) {
json_node->border_style = BS_NORMAL;
else LOG("Unhandled \"border\": %s\n", buf);
free(buf);
} else if (strcasecmp(last_key, "layout") == 0) {
char *buf = NULL;
asprintf(&buf, "%.*s", (int)len, val);
if (strcasecmp(buf, "default") == 0)
json_node->layout = L_DEFAULT;
else if (strcasecmp(buf, "stacked") == 0)
json_node->layout = L_STACKED;
else if (strcasecmp(buf, "tabbed") == 0)
json_node->layout = L_TABBED;
else if (strcasecmp(buf, "dockarea") == 0)
json_node->layout = L_DOCKAREA;
else if (strcasecmp(buf, "output") == 0)
json_node->layout = L_OUTPUT;
else LOG("Unhandled \"layout\": %s\n", buf);
free(buf);
}
}
return 1;
@ -142,6 +157,7 @@ static int json_int(void *ctx, long long val) {
static int json_int(void *ctx, long val) {
#endif
LOG("int %d for key %s\n", val, last_key);
// TODO: remove this after the next preview release
if (strcasecmp(last_key, "layout") == 0) {
json_node->layout = val;
}

View File

@ -26,7 +26,7 @@ my $expected = {
geometry => ignore(),
swallows => ignore(),
percent => 0,
layout => 0,
layout => 'default',
focus => ignore(),
focused => 0,
urgent => 0,