diff options
Diffstat (limited to 'sway/commands/bind.c')
-rw-r--r-- | sway/commands/bind.c | 49 |
1 files changed, 2 insertions, 47 deletions
diff --git a/sway/commands/bind.c b/sway/commands/bind.c index 820c2a6a..701d9746 100644 --- a/sway/commands/bind.c +++ b/sway/commands/bind.c @@ -30,33 +30,6 @@ void free_sway_binding(struct sway_binding *binding) { free(binding); } -static struct sway_binding *sway_binding_dup(struct sway_binding *sb) { - struct sway_binding *new_sb = calloc(1, sizeof(struct sway_binding)); - if (!new_sb) { - return NULL; - } - - new_sb->type = sb->type; - new_sb->order = sb->order; - new_sb->flags = sb->flags; - new_sb->modifiers = sb->modifiers; - new_sb->command = strdup(sb->command); - - new_sb->keys = create_list(); - int i; - for (i = 0; i < sb->keys->length; ++i) { - xkb_keysym_t *key = malloc(sizeof(xkb_keysym_t)); - if (!key) { - free_sway_binding(new_sb); - return NULL; - } - *key = *(xkb_keysym_t *)sb->keys->items[i]; - list_add(new_sb->keys, key); - } - - return new_sb; -} - /** * Returns true if the bindings have the same key and modifier combinations. * Note that keyboard layout is not considered, so the bindings might actually @@ -214,9 +187,6 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv, } binding->command = join_args(argv + 1, argc - 1); - if (strcasestr(binding->command, "reload")) { - binding->flags |= BINDING_RELOAD; - } list_t *split = split_string(argv[0], "+"); for (int i = 0; i < split->length; ++i) { @@ -306,31 +276,16 @@ struct cmd_results *cmd_bindcode(int argc, char **argv) { * Execute the command associated to a binding */ void seat_execute_command(struct sway_seat *seat, struct sway_binding *binding) { - wlr_log(WLR_DEBUG, "running command for binding: %s", - binding->command); - - struct sway_binding *binding_copy = binding; - // if this is a reload command we need to make a duplicate of the - // binding since it will be gone after the reload has completed. - if (binding->flags & BINDING_RELOAD) { - binding_copy = sway_binding_dup(binding); - if (!binding_copy) { - wlr_log(WLR_ERROR, "Failed to duplicate binding during reload"); - return; - } - } + wlr_log(WLR_DEBUG, "running command for binding: %s", binding->command); config->handler_context.seat = seat; struct cmd_results *results = execute_command(binding->command, NULL, NULL); if (results->status == CMD_SUCCESS) { - ipc_event_binding(binding_copy); + ipc_event_binding(binding); } else { wlr_log(WLR_DEBUG, "could not run command for binding: %s (%s)", binding->command, results->error); } - if (binding_copy->flags & BINDING_RELOAD) { - free_sway_binding(binding_copy); - } free_cmd_results(results); } |