diff options
-rw-r--r-- | sway/commands.c | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/sway/commands.c b/sway/commands.c index 8c45dabe..0102fc5a 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -494,6 +494,8 @@ static struct cmd_results *cmd_move(int argc, char **argv) { | |||
494 | if ((error = checkarg(argc, "move", EXPECTED_AT_LEAST, 1))) { | 494 | if ((error = checkarg(argc, "move", EXPECTED_AT_LEAST, 1))) { |
495 | return error; | 495 | return error; |
496 | } | 496 | } |
497 | const char* expected_syntax = "Expected 'move <left|right|up|down>' or " | ||
498 | "'move <container|window> to workspace <name>'"; | ||
497 | swayc_t *view = get_focused_container(&root_container); | 499 | swayc_t *view = get_focused_container(&root_container); |
498 | 500 | ||
499 | if (strcasecmp(argv[0], "left") == 0) { | 501 | if (strcasecmp(argv[0], "left") == 0) { |
@@ -505,31 +507,33 @@ static struct cmd_results *cmd_move(int argc, char **argv) { | |||
505 | } else if (strcasecmp(argv[0], "down") == 0) { | 507 | } else if (strcasecmp(argv[0], "down") == 0) { |
506 | move_container(view, MOVE_DOWN); | 508 | move_container(view, MOVE_DOWN); |
507 | } else if (strcasecmp(argv[0], "container") == 0 || strcasecmp(argv[0], "window") == 0) { | 509 | } else if (strcasecmp(argv[0], "container") == 0 || strcasecmp(argv[0], "window") == 0) { |
508 | // "move container to workspace x" | 510 | // "move container ... |
509 | if ((error = checkarg(argc, "move container/window", EXPECTED_EQUAL_TO, 4))) { | 511 | if ((error = checkarg(argc, "move container/window", EXPECTED_AT_LEAST, 4))) { |
510 | return error; | 512 | return error; |
511 | } else if ( strcasecmp(argv[1], "to") != 0 || strcasecmp(argv[2], "workspace") != 0) { | 513 | } else if ( strcasecmp(argv[1], "to") == 0 && strcasecmp(argv[2], "workspace") == 0) { |
512 | return cmd_results_new(CMD_INVALID, "move", "Expected 'move %s to workspace <name>'", argv[0]); | 514 | // move container to workspace x |
513 | } | 515 | if (view->type != C_CONTAINER && view->type != C_VIEW) { |
514 | 516 | return cmd_results_new(CMD_FAILURE, "move", "Can only move containers and views."); | |
515 | if (view->type != C_CONTAINER && view->type != C_VIEW) { | 517 | } |
516 | return cmd_results_new(CMD_FAILURE, "move", "Can only move containers and views."); | ||
517 | } | ||
518 | 518 | ||
519 | const char *ws_name = argv[3]; | 519 | const char *ws_name = argv[3]; |
520 | if (argc == 5) { | 520 | if (argc == 5) { |
521 | // move "container to workspace number x" | 521 | // move "container to workspace number x" |
522 | ws_name = argv[4]; | 522 | ws_name = argv[4]; |
523 | } | 523 | } |
524 | 524 | ||
525 | swayc_t *ws = workspace_by_name(ws_name); | 525 | swayc_t *ws = workspace_by_name(ws_name); |
526 | if (ws == NULL) { | 526 | if (ws == NULL) { |
527 | ws = workspace_create(ws_name); | 527 | ws = workspace_create(ws_name); |
528 | } | ||
529 | move_container_to(view, get_focused_container(ws)); | ||
530 | } else { | ||
531 | return cmd_results_new(CMD_INVALID, "move", expected_syntax); | ||
528 | } | 532 | } |
529 | move_container_to(view, get_focused_container(ws)); | ||
530 | } else if (strcasecmp(argv[0], "scratchpad") == 0) { | 533 | } else if (strcasecmp(argv[0], "scratchpad") == 0) { |
534 | // move scratchpad ... | ||
531 | if (view->type != C_CONTAINER && view->type != C_VIEW) { | 535 | if (view->type != C_CONTAINER && view->type != C_VIEW) { |
532 | return cmd_results_new(CMD_FAILURE, "move", "Can only move containers and views."); | 536 | return cmd_results_new(CMD_FAILURE, "move scratchpad", "Can only move containers and views."); |
533 | } | 537 | } |
534 | swayc_t *view = get_focused_container(&root_container); | 538 | swayc_t *view = get_focused_container(&root_container); |
535 | int i; | 539 | int i; |
@@ -554,8 +558,7 @@ static struct cmd_results *cmd_move(int argc, char **argv) { | |||
554 | } | 558 | } |
555 | set_focused_container(focused); | 559 | set_focused_container(focused); |
556 | } else { | 560 | } else { |
557 | return cmd_results_new(CMD_INVALID, "move", | 561 | return cmd_results_new(CMD_INVALID, "move", expected_syntax); |
558 | "Expected 'move <left|right|up|down>' or 'move <container|window> to workspace <name>'"); | ||
559 | } | 562 | } |
560 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | 563 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); |
561 | } | 564 | } |