From 6197fff0b4b6783362f2e2673fdc0827c5948a4a Mon Sep 17 00:00:00 2001
From: lbonn <bonnans.l@gmail.com>
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(-)

(limited to 'sway/commands')

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