aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/bind.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/commands/bind.c')
-rw-r--r--sway/commands/bind.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sway/commands/bind.c b/sway/commands/bind.c
index b134c92f..5b56ba30 100644
--- a/sway/commands/bind.c
+++ b/sway/commands/bind.c
@@ -214,6 +214,9 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv,
214 } 214 }
215 215
216 binding->command = join_args(argv + 1, argc - 1); 216 binding->command = join_args(argv + 1, argc - 1);
217 if (strcasestr(binding->command, "reload")) {
218 binding->flags |= BINDING_RELOAD;
219 }
217 220
218 list_t *split = split_string(argv[0], "+"); 221 list_t *split = split_string(argv[0], "+");
219 for (int i = 0; i < split->length; ++i) { 222 for (int i = 0; i < split->length; ++i) {
@@ -307,11 +310,9 @@ void seat_execute_command(struct sway_seat *seat, struct sway_binding *binding)
307 binding->command); 310 binding->command);
308 311
309 struct sway_binding *binding_copy = binding; 312 struct sway_binding *binding_copy = binding;
310 bool reload = false;
311 // if this is a reload command we need to make a duplicate of the 313 // if this is a reload command we need to make a duplicate of the
312 // binding since it will be gone after the reload has completed. 314 // binding since it will be gone after the reload has completed.
313 if (strcasestr(binding->command, "reload")) { 315 if (binding->flags & BINDING_RELOAD) {
314 reload = true;
315 binding_copy = sway_binding_dup(binding); 316 binding_copy = sway_binding_dup(binding);
316 if (!binding_copy) { 317 if (!binding_copy) {
317 wlr_log(WLR_ERROR, "Failed to duplicate binding during reload"); 318 wlr_log(WLR_ERROR, "Failed to duplicate binding during reload");
@@ -328,7 +329,7 @@ void seat_execute_command(struct sway_seat *seat, struct sway_binding *binding)
328 binding->command, results->error); 329 binding->command, results->error);
329 } 330 }
330 331
331 if (reload) { // free the binding if we made a copy 332 if (binding->flags & BINDING_RELOAD) { // free the binding if we made a copy
332 free_sway_binding(binding_copy); 333 free_sway_binding(binding_copy);
333 } 334 }
334 free_cmd_results(results); 335 free_cmd_results(results);