aboutsummaryrefslogtreecommitdiff
path: root/sway/commands
diff options
context:
space:
mode:
authorfrsfnrrg <frsfnrrg@users.noreply.github.com>2018-07-23 21:38:29 -0400
committerfrsfnrrg <frsfnrrg@users.noreply.github.com>2018-07-23 21:38:29 -0400
commit94dd8823a0081f7983dce368d5d093d1d3eeaefe (patch)
treef2147f1ef4871edb4d989d26cd9b1104797d27bc /sway/commands
parent754372c3de1f5b357850cb58cc8ddc1aee596bd6 (diff)
downloadsway-94dd8823a0081f7983dce368d5d093d1d3eeaefe.tar.xz
Invoke mouse bindings
The mouse binding logic is inspired/copied from the keyboard binding logic; we store a sorted list of the currently pressed buttons, and trigger a binding when the currently pressed (or just recently pressed, in the case of a release binding) buttons, as well as modifiers/container region, match those of a given binding. As the code to execute a binding is not very keyboard specific, keyboard_execute_command is renamed to seat_execute_command and moved to where the other binding handling functions are. The call to transaction_commit_dirty has been lifted out.
Diffstat (limited to 'sway/commands')
-rw-r--r--sway/commands/bind.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sway/commands/bind.c b/sway/commands/bind.c
index 6910237f..133fd089 100644
--- a/sway/commands/bind.c
+++ b/sway/commands/bind.c
@@ -267,3 +267,19 @@ struct cmd_results *cmd_bindsym(int argc, char **argv) {
struct cmd_results *cmd_bindcode(int argc, char **argv) {
return cmd_bindsym_or_bindcode(argc, argv, true);
}
+
+
+/**
+ * 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);
+ config->handler_context.seat = seat;
+ struct cmd_results *results = execute_command(binding->command, NULL);
+ if (results->status != CMD_SUCCESS) {
+ wlr_log(WLR_DEBUG, "could not run command for binding: %s (%s)",
+ binding->command, results->error);
+ }
+ free_cmd_results(results);
+}