diff options
Diffstat (limited to 'sway/config.c')
-rw-r--r-- | sway/config.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/sway/config.c b/sway/config.c index 1973de02..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 | ||
@@ -695,7 +726,7 @@ struct bar_config *default_bar_config(void) { | |||
695 | bar = malloc(sizeof(struct bar_config)); | 726 | bar = malloc(sizeof(struct bar_config)); |
696 | bar->mode = strdup("dock"); | 727 | bar->mode = strdup("dock"); |
697 | bar->hidden_state = strdup("hide"); | 728 | bar->hidden_state = strdup("hide"); |
698 | bar->modifier = 0; | 729 | bar->modifier = WLC_BIT_MOD_LOGO; |
699 | bar->outputs = NULL; | 730 | bar->outputs = NULL; |
700 | bar->position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM; | 731 | bar->position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM; |
701 | bar->bindings = create_list(); | 732 | bar->bindings = create_list(); |