diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2019-06-11 21:41:02 -0400 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-06-12 07:56:41 +0300 |
commit | 9670ccee683ab985e89eb04302fb998c4161f2d6 (patch) | |
tree | f7cafeaf55a7c139e97a920b0b43bcb080d3a27c /sway/input | |
parent | 2b5bf78fafdf027624ca88e1f703bc9e577f4690 (diff) | |
download | sway-9670ccee683ab985e89eb04302fb998c4161f2d6.tar.xz |
bindings: defer while initiailizing
This adds the logic to defer binding execution while sway is still
initializing. Without this, the binding command would be executed, but
the command handler would return CMD_DEFER, which was being treated as
a failure to run. To avoid partial executions, this will defer all
bindings while config->active is false.
Diffstat (limited to 'sway/input')
-rw-r--r-- | sway/input/seat.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c index e6b53736..12309c1d 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -9,6 +9,7 @@ #include <wlr/types/wlr_primary_selection.h> #include <wlr/types/wlr_xcursor_manager.h> #include "config.h" +#include "list.h" #include "log.h" #include "sway/desktop.h" #include "sway/input/cursor.h" @@ -51,6 +52,10 @@ void seat_destroy(struct sway_seat *seat) { wl_list_remove(&seat->request_set_primary_selection.link); wl_list_remove(&seat->link); wlr_seat_destroy(seat->wlr_seat); + for (int i = 0; i < seat->deferred_bindings->length; i++) { + free_sway_binding(seat->deferred_bindings->items[i]); + } + list_free(seat->deferred_bindings); free(seat->prev_workspace_name); free(seat); } @@ -445,6 +450,8 @@ struct sway_seat *seat_create(const char *seat_name) { root_for_each_workspace(collect_focus_workspace_iter, seat); root_for_each_container(collect_focus_container_iter, seat); + seat->deferred_bindings = create_list(); + if (!wl_list_empty(&server.input->seats)) { // Since this is not the first seat, attempt to set initial focus struct sway_seat *current_seat = input_manager_current_seat(); |