aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/bar/mode.c
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-09-30 23:06:40 +0100
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-10-14 13:33:12 +0100
commit1f90f92f45580adfbe4ce363181331c182f3f341 (patch)
tree9db916dca5ca91a63e10316a68e6296b4c7ef0f1 /sway/commands/bar/mode.c
parentMerge pull request #2808 from RedSoxFan/bar-subcommands (diff)
downloadsway-1f90f92f45580adfbe4ce363181331c182f3f341.tar.gz
sway-1f90f92f45580adfbe4ce363181331c182f3f341.tar.zst
sway-1f90f92f45580adfbe4ce363181331c182f3f341.zip
commands: fix sending bar mode/hidden_state updates to all bars
Previously, if a change was sent to all bars, it would only actually change the first bar it encountered, due to return value handling
Diffstat (limited to 'sway/commands/bar/mode.c')
-rw-r--r--sway/commands/bar/mode.c34
1 files changed, 15 insertions, 19 deletions
diff --git a/sway/commands/bar/mode.c b/sway/commands/bar/mode.c
index 28e2d77b..dbdd3897 100644
--- a/sway/commands/bar/mode.c
+++ b/sway/commands/bar/mode.c
@@ -33,7 +33,7 @@ static struct cmd_results *bar_set_mode(struct bar_config *bar, const char *mode
33 33
34 // free old mode 34 // free old mode
35 free(old_mode); 35 free(old_mode);
36 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 36 return NULL;
37} 37}
38 38
39struct cmd_results *bar_cmd_mode(int argc, char **argv) { 39struct cmd_results *bar_cmd_mode(int argc, char **argv) {
@@ -51,24 +51,20 @@ struct cmd_results *bar_cmd_mode(int argc, char **argv) {
51 51
52 const char *mode = argv[0]; 52 const char *mode = argv[0];
53 if (config->reading) { 53 if (config->reading) {
54 return bar_set_mode(config->current_bar, mode); 54 error = bar_set_mode(config->current_bar, mode);
55 } 55 } else {
56 56 const char *id = argc == 2 ? argv[1] : NULL;
57 const char *id = NULL; 57 for (int i = 0; i < config->bars->length; ++i) {
58 if (argc == 2) { 58 struct bar_config *bar = config->bars->items[i];
59 id = argv[1]; 59 if (id) {
60 } 60 if (strcmp(id, bar->id) == 0) {
61 61 error = bar_set_mode(bar, mode);
62 struct bar_config *bar; 62 break;
63 for (int i = 0; i < config->bars->length; ++i) { 63 }
64 bar = config->bars->items[i]; 64 } else if ((error = bar_set_mode(bar, mode))) {
65 if (id && strcmp(id, bar->id) == 0) { 65 break;
66 return bar_set_mode(bar, mode); 66 }
67 }
68 error = bar_set_mode(bar, mode);
69 if (error) {
70 return error;
71 } 67 }
72 } 68 }
73 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 69 return error ? error : cmd_results_new(CMD_SUCCESS, NULL, NULL);
74} 70}