diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-04-29 09:56:07 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-04-29 09:56:07 -0400 |
commit | 02812a2e4da9f274c5957975fdbb4a4a58b20a69 (patch) | |
tree | 642c6451498e32eaa66b7f1b863b971d1688cb2c /sway | |
parent | 1376de4f46ed13de133146b6d87048ce93eae1e8 (diff) |
Support specifying fewer than 5 colors
This doesn't work, I'm not sure why. The color structs definitely get
changed but if you specify fewer than 5, it renders with the defaults.
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands.c | 2 | ||||
-rw-r--r-- | sway/commands/client.c | 22 |
2 files changed, 12 insertions, 12 deletions
diff --git a/sway/commands.c b/sway/commands.c index 01e5e6b5..509fd1a8 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -250,7 +250,7 @@ static struct cmd_handler bar_handlers[] = { */ struct cmd_results *add_color(const char *name, char *buffer, const char *color) { int len = strlen(color); - if (len != 7 && len != 9 ) { + if (len != 7 && len != 9) { return cmd_results_new(CMD_INVALID, name, "Invalid color definition %s", color); } diff --git a/sway/commands/client.c b/sway/commands/client.c index 7954f670..30f9137e 100644 --- a/sway/commands/client.c +++ b/sway/commands/client.c @@ -4,27 +4,27 @@ static struct cmd_results *parse_border_color(struct border_colors *border_colors, const char *cmd_name, int argc, char **argv) { struct cmd_results *error = NULL; - if (argc != 5) { - return cmd_results_new(CMD_INVALID, cmd_name, "Requires exactly five color values"); + if (argc < 3 || argc > 5) { + return cmd_results_new(CMD_INVALID, cmd_name, "Requires between three and five color values"); } - uint32_t colors[5]; + uint32_t *colors[5] = { + &border_colors->border, + &border_colors->background, + &border_colors->text, + &border_colors->indicator, + &border_colors->child_border + }; int i; - for (i = 0; i < 5; i++) { + for (i = 0; i < argc; i++) { char buffer[10]; error = add_color(cmd_name, buffer, argv[i]); if (error) { return error; } - colors[i] = strtoul(buffer+1, NULL, 16); + *colors[i] = strtoul(buffer + 1, NULL, 16); } - border_colors->border = colors[0]; - border_colors->background = colors[1]; - border_colors->text = colors[2]; - border_colors->indicator = colors[3]; - border_colors->child_border = colors[4]; - return cmd_results_new(CMD_SUCCESS, NULL, NULL); } |