From 6197fff0b4b6783362f2e2673fdc0827c5948a4a Mon Sep 17 00:00:00 2001 From: lbonn Date: Fri, 6 Oct 2017 14:16:24 +0200 Subject: Fix move to named workspaces The command parsing did not handle workspaces with spaces in their name (like it's done in `cmd_workspace`) --- sway/commands/move.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/sway/commands/move.c b/sway/commands/move.c index 00b57103..8d89f2ef 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c @@ -7,6 +7,7 @@ #include "sway/output.h" #include "sway/workspace.h" #include "list.h" +#include "stringop.h" struct cmd_results *cmd_move(int argc, char **argv) { struct cmd_results *error = NULL; @@ -59,18 +60,23 @@ struct cmd_results *cmd_move(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "move", "Can only move containers and views."); } - const char *ws_name = argv[3]; swayc_t *ws; - if (argc == 5 && strcasecmp(ws_name, "number") == 0) { + const char *num_name = NULL; + char *ws_name = NULL; + if (argc == 5 && strcasecmp(argv[3], "number") == 0) { // move "container to workspace number x" - ws_name = argv[4]; - ws = workspace_by_number(ws_name); + num_name = argv[4]; + ws = workspace_by_number(num_name); } else { + ws_name = join_args(argv + 3, argc - 3); ws = workspace_by_name(ws_name); } if (ws == NULL) { - ws = workspace_create(ws_name); + ws = workspace_create(ws_name ? ws_name : num_name); + } + if (ws_name) { + free(ws_name); } move_container_to(view, get_focused_container(ws)); } else if (strcasecmp(argv[1], "to") == 0 && strcasecmp(argv[2], "output") == 0) { -- cgit v1.2.3-54-g00ecf From a7e1a0eea9325238be938c0a812413f4121e2eaa Mon Sep 17 00:00:00 2001 From: lbonn Date: Fri, 6 Oct 2017 14:37:35 +0200 Subject: Make `workspace_next_name` work with spaces `workspace_next_name` parses workspace commands to find the default workspace names. It handled " " as a separator, which prevents the use of workspace names with spaces. --- sway/workspace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway/workspace.c b/sway/workspace.c index 29cacce9..e0367190 100644 --- a/sway/workspace.c +++ b/sway/workspace.c @@ -61,7 +61,7 @@ char *workspace_next_name(const char *output_name) { // workspace n char *cmd = argsep(&cmdlist, " "); if (cmdlist) { - name = argsep(&cmdlist, " ,;"); + name = argsep(&cmdlist, ",;"); } if (strcmp("workspace", cmd) == 0 && name) { -- cgit v1.2.3-54-g00ecf