From 02812a2e4da9f274c5957975fdbb4a4a58b20a69 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sat, 29 Apr 2017 09:56:07 -0400 Subject: 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. --- sway/commands.c | 2 +- sway/commands/client.c | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'sway') 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); } -- cgit v1.2.3