diff options
author | Tony Crisci <tony@dubstepdish.com> | 2018-01-21 08:46:31 -0500 |
---|---|---|
committer | Tony Crisci <tony@dubstepdish.com> | 2018-01-21 08:46:31 -0500 |
commit | 1156523ccf8b45102333cca7d80b3451930b48e8 (patch) | |
tree | 9ffcf90b69ee2940862c1add1f2fdf02dcd24da9 /sway/commands.c | |
parent | 6a1d71b8b8f33bdea3fb41bcd0de9439c0452682 (diff) |
run all commands with focused container context
Diffstat (limited to 'sway/commands.c')
-rw-r--r-- | sway/commands.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/sway/commands.c b/sway/commands.c index c1e25c5f..3ab5add6 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -11,6 +11,7 @@ #include "sway/criteria.h" #include "sway/security.h" #include "sway/input/input-manager.h" +#include "sway/input/seat.h" #include "stringop.h" #include "log.h" @@ -271,19 +272,26 @@ struct cmd_results *handle_command(char *_exec) { } if (!has_criteria) { - config->handler_context.current_container = NULL; - struct cmd_results *res = handler->handle(argc-1, argv+1); - if (res->status != CMD_SUCCESS) { - free_argv(argc, argv); - if (results) { - free_cmd_results(results); + // without criteria, the command acts upon the focused + // container + struct sway_seat *seat = config->handler_context.seat; + if (!seat) { + seat = sway_input_manager_get_default_seat(input_manager); + } + if (seat) { + config->handler_context.current_container = seat->focus; + struct cmd_results *res = handler->handle(argc-1, argv+1); + if (res->status != CMD_SUCCESS) { + free_argv(argc, argv); + if (results) { + free_cmd_results(results); + } + results = res; + goto cleanup; } - results = res; - goto cleanup; + free_cmd_results(res); } - free_cmd_results(res); } else { - wlr_log(L_DEBUG, "@@ running command on containers"); for (int i = 0; i < containers->length; ++i) { config->handler_context.current_container = containers->items[i]; struct cmd_results *res = handler->handle(argc-1, argv+1); |