diff options
Diffstat (limited to 'sway/config.c')
-rw-r--r-- | sway/config.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sway/config.c b/sway/config.c index 87b1342d..95d8f339 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -103,6 +103,8 @@ static void free_config(struct sway_config *config) { | |||
103 | free_output_config(config->output_configs->items[i]); | 103 | free_output_config(config->output_configs->items[i]); |
104 | } | 104 | } |
105 | list_free(config->output_configs); | 105 | list_free(config->output_configs); |
106 | |||
107 | list_free(config->active_bar_modifiers); | ||
106 | free(config); | 108 | free(config); |
107 | } | 109 | } |
108 | 110 | ||
@@ -145,6 +147,33 @@ static void config_defaults(struct sway_config *config) { | |||
145 | config->edge_gaps = true; | 147 | config->edge_gaps = true; |
146 | config->gaps_inner = 0; | 148 | config->gaps_inner = 0; |
147 | config->gaps_outer = 0; | 149 | config->gaps_outer = 0; |
150 | |||
151 | config->active_bar_modifiers = create_list(); | ||
152 | } | ||
153 | |||
154 | static int compare_modifiers(const void *left, const void *right) { | ||
155 | uint32_t a = *(uint32_t *)left; | ||
156 | uint32_t b = *(uint32_t *)right; | ||
157 | |||
158 | return a - b; | ||
159 | } | ||
160 | |||
161 | void update_active_bar_modifiers() { | ||
162 | if (config->active_bar_modifiers->length > 0) { | ||
163 | list_free(config->active_bar_modifiers); | ||
164 | config->active_bar_modifiers = create_list(); | ||
165 | } | ||
166 | |||
167 | struct bar_config *bar; | ||
168 | int i; | ||
169 | for (i = 0; i < config->bars->length; ++i) { | ||
170 | bar = config->bars->items[i]; | ||
171 | if (strcmp(bar->mode, "hide") == 0 && strcmp(bar->hidden_state, "hide") == 0) { | ||
172 | if (list_seq_find(config->active_bar_modifiers, compare_modifiers, &bar->modifier) < 0) { | ||
173 | list_add(config->active_bar_modifiers, &bar->modifier); | ||
174 | } | ||
175 | } | ||
176 | } | ||
148 | } | 177 | } |
149 | 178 | ||
150 | static char *get_config_path(void) { | 179 | static char *get_config_path(void) { |
@@ -215,6 +244,8 @@ bool load_config(const char *file) { | |||
215 | } | 244 | } |
216 | fclose(f); | 245 | fclose(f); |
217 | 246 | ||
247 | update_active_bar_modifiers(); | ||
248 | |||
218 | return config_load_success; | 249 | return config_load_success; |
219 | } | 250 | } |
220 | 251 | ||