aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands.c
diff options
context:
space:
mode:
authorLibravatar mwenzkowski <29407878+mwenzkowski@users.noreply.github.com>2018-12-05 08:20:40 +0100
committerLibravatar emersion <contact@emersion.fr>2018-12-05 11:32:23 +0100
commitcf6edaf26aa1461b89552727d2435d6fe9d0adf3 (patch)
tree4fc5994cb2df79fa0570f9224edb3c6ab2415051 /sway/commands.c
parentMerge pull request #3252 from hvenev/swaybar-rel (diff)
downloadsway-cf6edaf26aa1461b89552727d2435d6fe9d0adf3.tar.gz
sway-cf6edaf26aa1461b89552727d2435d6fe9d0adf3.tar.zst
sway-cf6edaf26aa1461b89552727d2435d6fe9d0adf3.zip
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.
Diffstat (limited to 'sway/commands.c')
-rw-r--r--sway/commands.c12
1 files 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,
232 } 232 }
233 } 233 }
234 234
235 // This is the container or workspace which this command will run on.
236 // Ignored if the command string contains criteria.
237 struct sway_node *node;
238 if (con) {
239 node = &con->node;
240 } else {
241 node = seat_get_focus_inactive(seat, &root->node);
242 }
243
244 config->handler_context.seat = seat; 235 config->handler_context.seat = seat;
245 236
246 head = exec; 237 head = exec;
@@ -301,6 +292,9 @@ list_t *execute_command(char *_exec, struct sway_seat *seat,
301 } 292 }
302 293
303 if (!config->handler_context.using_criteria) { 294 if (!config->handler_context.using_criteria) {
295 // The container or workspace which this command will run on.
296 struct sway_node *node = con ? &con->node :
297 seat_get_focus_inactive(seat, &root->node);
304 set_config_node(node); 298 set_config_node(node);
305 struct cmd_results *res = handler->handle(argc-1, argv+1); 299 struct cmd_results *res = handler->handle(argc-1, argv+1);
306 list_add(res_list, res); 300 list_add(res_list, res);