aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/bar.c
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-10-09 13:41:12 -0400
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-10-13 08:00:01 -0400
commit00745d6280d36b57e661f9de7af84c93fde60efa (patch)
tree2518c93327baa4df99c25f68754adf77c8429364 /sway/commands/bar.c
parentMerge pull request #2828 from RyanDwyer/fix-locked-map-crash (diff)
downloadsway-00745d6280d36b57e661f9de7af84c93fde60efa.tar.gz
sway-00745d6280d36b57e661f9de7af84c93fde60efa.tar.zst
sway-00745d6280d36b57e661f9de7af84c93fde60efa.zip
Fix bar subcommand handler structs and selection
Diffstat (limited to 'sway/commands/bar.c')
-rw-r--r--sway/commands/bar.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/sway/commands/bar.c b/sway/commands/bar.c
index 03f4c557..49a94104 100644
--- a/sway/commands/bar.c
+++ b/sway/commands/bar.c
@@ -17,7 +17,6 @@ static struct cmd_handler bar_handlers[] = {
17 { "height", bar_cmd_height }, 17 { "height", bar_cmd_height },
18 { "hidden_state", bar_cmd_hidden_state }, 18 { "hidden_state", bar_cmd_hidden_state },
19 { "icon_theme", bar_cmd_icon_theme }, 19 { "icon_theme", bar_cmd_icon_theme },
20 { "id", bar_cmd_id },
21 { "mode", bar_cmd_mode }, 20 { "mode", bar_cmd_mode },
22 { "modifier", bar_cmd_modifier }, 21 { "modifier", bar_cmd_modifier },
23 { "output", bar_cmd_output }, 22 { "output", bar_cmd_output },
@@ -27,7 +26,6 @@ static struct cmd_handler bar_handlers[] = {
27 { "separator_symbol", bar_cmd_separator_symbol }, 26 { "separator_symbol", bar_cmd_separator_symbol },
28 { "status_command", bar_cmd_status_command }, 27 { "status_command", bar_cmd_status_command },
29 { "strip_workspace_numbers", bar_cmd_strip_workspace_numbers }, 28 { "strip_workspace_numbers", bar_cmd_strip_workspace_numbers },
30 { "swaybar_command", bar_cmd_swaybar_command },
31 { "tray_output", bar_cmd_tray_output }, 29 { "tray_output", bar_cmd_tray_output },
32 { "tray_padding", bar_cmd_tray_padding }, 30 { "tray_padding", bar_cmd_tray_padding },
33 { "workspace_buttons", bar_cmd_workspace_buttons }, 31 { "workspace_buttons", bar_cmd_workspace_buttons },
@@ -36,8 +34,8 @@ static struct cmd_handler bar_handlers[] = {
36 34
37// Must be in alphabetical order for bsearch 35// Must be in alphabetical order for bsearch
38static struct cmd_handler bar_config_handlers[] = { 36static struct cmd_handler bar_config_handlers[] = {
39 { "hidden_state", bar_cmd_hidden_state }, 37 { "id", bar_cmd_id },
40 { "mode", bar_cmd_mode } 38 { "swaybar_command", bar_cmd_swaybar_command },
41}; 39};
42 40
43struct cmd_results *cmd_bar(int argc, char **argv) { 41struct cmd_results *cmd_bar(int argc, char **argv) {
@@ -46,16 +44,7 @@ struct cmd_results *cmd_bar(int argc, char **argv) {
46 return error; 44 return error;
47 } 45 }
48 46
49 if (find_handler(argv[0], bar_config_handlers, 47 bool spawn = false;
50 sizeof(bar_config_handlers))) {
51 if (config->reading) {
52 return config_subcommand(argv, argc, bar_config_handlers,
53 sizeof(bar_config_handlers));
54 }
55 return cmd_results_new(CMD_FAILURE, "bar",
56 "Can only be used in config file.");
57 }
58
59 if (argc > 1) { 48 if (argc > 1) {
60 struct bar_config *bar = NULL; 49 struct bar_config *bar = NULL;
61 if (!find_handler(argv[0], bar_handlers, sizeof(bar_handlers)) 50 if (!find_handler(argv[0], bar_handlers, sizeof(bar_handlers))
@@ -69,6 +58,7 @@ struct cmd_results *cmd_bar(int argc, char **argv) {
69 } 58 }
70 } 59 }
71 if (!bar) { 60 if (!bar) {
61 spawn = !config->reading;
72 wlr_log(WLR_DEBUG, "Creating bar: %s", argv[0]); 62 wlr_log(WLR_DEBUG, "Creating bar: %s", argv[0]);
73 bar = default_bar_config(); 63 bar = default_bar_config();
74 if (!bar) { 64 if (!bar) {
@@ -83,7 +73,7 @@ struct cmd_results *cmd_bar(int argc, char **argv) {
83 } 73 }
84 } 74 }
85 75
86 if (!config->current_bar) { 76 if (!config->current_bar && config->reading) {
87 // Create new bar with default values 77 // Create new bar with default values
88 struct bar_config *bar = default_bar_config(); 78 struct bar_config *bar = default_bar_config();
89 if (!bar) { 79 if (!bar) {
@@ -111,5 +101,23 @@ struct cmd_results *cmd_bar(int argc, char **argv) {
111 wlr_log(WLR_DEBUG, "Creating bar %s", bar->id); 101 wlr_log(WLR_DEBUG, "Creating bar %s", bar->id);
112 } 102 }
113 103
114 return config_subcommand(argv, argc, bar_handlers, sizeof(bar_handlers)); 104 if (find_handler(argv[0], bar_config_handlers,
105 sizeof(bar_config_handlers))) {
106 if (config->reading) {
107 return config_subcommand(argv, argc, bar_config_handlers,
108 sizeof(bar_config_handlers));
109 }
110 return cmd_results_new(CMD_INVALID, "bar",
111 "Can only be used in the config file.");
112 }
113
114 struct cmd_results *res =
115 config_subcommand(argv, argc, bar_handlers, sizeof(bar_handlers));
116 if (!config->reading) {
117 if (spawn) {
118 load_swaybar(config->current_bar);
119 }
120 config->current_bar = NULL;
121 }
122 return res;
115} 123}