mirror of
https://github.com/swaywm/sway.git
synced 2026-04-30 06:46:24 -04:00
Use stored commands for bindings
The preceding commit includes motivation; specifically, invoking keyboard and mouse bindings should never fail unless they perform an action which can fail. For instance, a `bindcode Ctrl+9 exit` should always exit; of course, `exec` may fail for external reasons. The core changes are to bind.c and commands.c. As a single command may actually, on being parsed, generate multiple commands to be executed (consider `workspace 1; splith`), the parsing code in execute_command is moved to a separate function, parse_command, which returns a list_t of stored commands; leaving execute_command to parse the command, execute each resulting list element; and then cleanup. An additional field for the list of parsed stored commands, is added to struct sway_binding, usurping the name "command". This is initialized via parse_command, and then seat_execute_command is adjusted accordingly. Side effects of this change include: * Reference counting `struct criteria`, because a criterion parsed once may apply to multiple stored commands, and the alternative of duplicating criteria is even more complicated. * Adding reading and active arguments to config_handler, because when bindsyms parse commands, they require handler lookups to be performed as though it were runtime. * Reference counting `struct sway_binding`, because the alternative of updating sway_binding_dup is even more complicated when allocation failures are be taken into account.
This commit is contained in:
parent
f8b9c796f4
commit
6a805aace0
13 changed files with 217 additions and 135 deletions
|
|
@ -18,6 +18,7 @@ list_t *create_list(void) {
|
|||
static void list_resize(list_t *list) {
|
||||
if (list->length == list->capacity) {
|
||||
list->capacity += 10;
|
||||
// TODO: safely handle realloc failure
|
||||
list->items = realloc(list->items, sizeof(void*) * list->capacity);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue