From cf6edaf26aa1461b89552727d2435d6fe9d0adf3 Mon Sep 17 00:00:00 2001 From: mwenzkowski <29407878+mwenzkowski@users.noreply.github.com> Date: Wed, 5 Dec 2018 08:20:40 +0100 Subject: [PATCH] Fix command list execution Determine the container/workspace a command is run on, each time when a command of the command list will be run. Previously the container/workspace was determined only once at the beginning of command list execution, which led to wrong behaviour because commands wouldn't take into account when a previous command changed the focused container. --- sway/commands.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/sway/commands.c b/sway/commands.c index 1203f63a..d5cab655 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -232,15 +232,6 @@ list_t *execute_command(char *_exec, struct sway_seat *seat, } } - // This is the container or workspace which this command will run on. - // Ignored if the command string contains criteria. - struct sway_node *node; - if (con) { - node = &con->node; - } else { - node = seat_get_focus_inactive(seat, &root->node); - } - config->handler_context.seat = seat; head = exec; @@ -301,6 +292,9 @@ list_t *execute_command(char *_exec, struct sway_seat *seat, } if (!config->handler_context.using_criteria) { + // The container or workspace which this command will run on. + struct sway_node *node = con ? &con->node : + seat_get_focus_inactive(seat, &root->node); set_config_node(node); struct cmd_results *res = handler->handle(argc-1, argv+1); list_add(res_list, res);