mirror of
https://github.com/swaywm/sway.git
synced 2026-04-30 06:46:24 -04:00
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. |
||
|---|---|---|
| .. | ||
| sway | ||
| swaybar | ||
| swaylock | ||
| swaynag | ||
| background-image.h | ||
| cairo.h | ||
| ipc-client.h | ||
| ipc.h | ||
| list.h | ||
| log.h | ||
| meson.build | ||
| pango.h | ||
| pool-buffer.h | ||
| readline.h | ||
| stringop.h | ||
| unicode.h | ||
| util.h | ||