Implement mapping from string to layout as extra function
This commit is contained in:
parent
367811be2d
commit
3410cb256d
|
@ -69,6 +69,14 @@ Rect rect_sub(Rect a, Rect b);
|
|||
*/
|
||||
__attribute__((pure)) bool name_is_digits(const char *name);
|
||||
|
||||
/**
|
||||
* Set 'out' to the layout_t value for the given layout. The function
|
||||
* returns true on success or false if the passed string is not a valid
|
||||
* layout name.
|
||||
*
|
||||
*/
|
||||
bool layout_from_name(const char *layout_str, layout_t *out);
|
||||
|
||||
/**
|
||||
* Parses the workspace name as a number. Returns -1 if the workspace should be
|
||||
* interpreted as a "named workspace".
|
||||
|
|
|
@ -1489,21 +1489,8 @@ void cmd_move_direction(I3_CMD, const char *direction, long move_px) {
|
|||
void cmd_layout(I3_CMD, const char *layout_str) {
|
||||
HANDLE_EMPTY_MATCH;
|
||||
|
||||
if (strcmp(layout_str, "stacking") == 0)
|
||||
layout_str = "stacked";
|
||||
layout_t layout;
|
||||
/* default is a special case which will be handled in con_set_layout(). */
|
||||
if (strcmp(layout_str, "default") == 0)
|
||||
layout = L_DEFAULT;
|
||||
else if (strcmp(layout_str, "stacked") == 0)
|
||||
layout = L_STACKED;
|
||||
else if (strcmp(layout_str, "tabbed") == 0)
|
||||
layout = L_TABBED;
|
||||
else if (strcmp(layout_str, "splitv") == 0)
|
||||
layout = L_SPLITV;
|
||||
else if (strcmp(layout_str, "splith") == 0)
|
||||
layout = L_SPLITH;
|
||||
else {
|
||||
if (!layout_from_name(layout_str, &layout)) {
|
||||
ELOG("Unknown layout \"%s\", this is a mismatch between code and parser spec.\n", layout_str);
|
||||
return;
|
||||
}
|
||||
|
|
25
src/util.c
25
src/util.c
|
@ -66,6 +66,31 @@ __attribute__((pure)) bool name_is_digits(const char *name) {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set 'out' to the layout_t value for the given layout. The function
|
||||
* returns true on success or false if the passed string is not a valid
|
||||
* layout name.
|
||||
*
|
||||
*/
|
||||
bool layout_from_name(const char *layout_str, layout_t *out) {
|
||||
if (strcmp(layout_str, "default") == 0) {
|
||||
*out = L_DEFAULT;
|
||||
} else if (strcasecmp(layout_str, "stacked") == 0 ||
|
||||
strcasecmp(layout_str, "stacking") == 0) {
|
||||
*out = L_STACKED;
|
||||
} else if (strcasecmp(layout_str, "tabbed") == 0) {
|
||||
*out = L_TABBED;
|
||||
} else if (strcasecmp(layout_str, "splitv") == 0) {
|
||||
*out = L_SPLITV;
|
||||
} else if (strcasecmp(layout_str, "splith") == 0) {
|
||||
*out = L_SPLITH;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parses the workspace name as a number. Returns -1 if the workspace should be
|
||||
* interpreted as a "named workspace".
|
||||
|
|
Loading…
Reference in New Issue