Merge pull request #1384 from lbonn/move-workspace-fullname
Fix two issues with spaces in workspace names
This commit is contained in:
commit
fff684b98e
|
@ -7,6 +7,7 @@
|
||||||
#include "sway/output.h"
|
#include "sway/output.h"
|
||||||
#include "sway/workspace.h"
|
#include "sway/workspace.h"
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
|
#include "stringop.h"
|
||||||
|
|
||||||
struct cmd_results *cmd_move(int argc, char **argv) {
|
struct cmd_results *cmd_move(int argc, char **argv) {
|
||||||
struct cmd_results *error = NULL;
|
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.");
|
return cmd_results_new(CMD_FAILURE, "move", "Can only move containers and views.");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *ws_name = argv[3];
|
|
||||||
swayc_t *ws;
|
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"
|
// move "container to workspace number x"
|
||||||
ws_name = argv[4];
|
num_name = argv[4];
|
||||||
ws = workspace_by_number(ws_name);
|
ws = workspace_by_number(num_name);
|
||||||
} else {
|
} else {
|
||||||
|
ws_name = join_args(argv + 3, argc - 3);
|
||||||
ws = workspace_by_name(ws_name);
|
ws = workspace_by_name(ws_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ws == NULL) {
|
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));
|
move_container_to(view, get_focused_container(ws));
|
||||||
} else if (strcasecmp(argv[1], "to") == 0 && strcasecmp(argv[2], "output") == 0) {
|
} else if (strcasecmp(argv[1], "to") == 0 && strcasecmp(argv[2], "output") == 0) {
|
||||||
|
|
|
@ -61,7 +61,7 @@ char *workspace_next_name(const char *output_name) {
|
||||||
// workspace n
|
// workspace n
|
||||||
char *cmd = argsep(&cmdlist, " ");
|
char *cmd = argsep(&cmdlist, " ");
|
||||||
if (cmdlist) {
|
if (cmdlist) {
|
||||||
name = argsep(&cmdlist, " ,;");
|
name = argsep(&cmdlist, ",;");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp("workspace", cmd) == 0 && name) {
|
if (strcmp("workspace", cmd) == 0 && name) {
|
||||||
|
|
Loading…
Reference in a new issue