@ -494,6 +494,8 @@ static struct cmd_results *cmd_move(int argc, char **argv) {
if ( ( error = checkarg ( argc , " move " , EXPECTED_AT_LEAST , 1 ) ) ) {
if ( ( error = checkarg ( argc , " move " , EXPECTED_AT_LEAST , 1 ) ) ) {
return error ;
return error ;
}
}
const char * expected_syntax = " Expected 'move <left|right|up|down>' or "
" 'move <container|window> to workspace <name>' " ;
swayc_t * view = get_focused_container ( & root_container ) ;
swayc_t * view = get_focused_container ( & root_container ) ;
if ( strcasecmp ( argv [ 0 ] , " left " ) = = 0 ) {
if ( strcasecmp ( argv [ 0 ] , " left " ) = = 0 ) {
@ -505,31 +507,33 @@ static struct cmd_results *cmd_move(int argc, char **argv) {
} else if ( strcasecmp ( argv [ 0 ] , " down " ) = = 0 ) {
} else if ( strcasecmp ( argv [ 0 ] , " down " ) = = 0 ) {
move_container ( view , MOVE_DOWN ) ;
move_container ( view , MOVE_DOWN ) ;
} else if ( strcasecmp ( argv [ 0 ] , " container " ) = = 0 | | strcasecmp ( argv [ 0 ] , " window " ) = = 0 ) {
} else if ( strcasecmp ( argv [ 0 ] , " container " ) = = 0 | | strcasecmp ( argv [ 0 ] , " window " ) = = 0 ) {
// "move container to workspace x"
// "move container ...
if ( ( error = checkarg ( argc , " move container/window " , EXPECTED_ EQUAL_TO , 4 ) ) ) {
if ( ( error = checkarg ( argc , " move container/window " , EXPECTED_ AT_LEAST , 4 ) ) ) {
return error ;
return error ;
} else if ( strcasecmp ( argv [ 1 ] , " to " ) ! = 0 | | strcasecmp ( argv [ 2 ] , " workspace " ) ! = 0 ) {
} else if ( strcasecmp ( argv [ 1 ] , " to " ) = = 0 & & strcasecmp ( argv [ 2 ] , " workspace " ) = = 0 ) {
return cmd_results_new ( CMD_INVALID , " move " , " Expected 'move %s to workspace <name>' " , argv [ 0 ] ) ;
// move container to workspace x
}
if ( view - > type ! = C_CONTAINER & & view - > type ! = C_VIEW ) {
return cmd_results_new ( CMD_FAILURE , " move " , " Can only move containers and views. " ) ;
if ( view - > type ! = C_CONTAINER & & view - > type ! = C_VIEW ) {
}
return cmd_results_new ( CMD_FAILURE , " move " , " Can only move containers and views. " ) ;
}
const char * ws_name = argv [ 3 ] ;
const char * ws_name = argv [ 3 ] ;
if ( argc = = 5 ) {
if ( argc = = 5 ) {
// move "container to workspace number x"
// move "container to workspace number x"
ws_name = argv [ 4 ] ;
ws_name = argv [ 4 ] ;
}
}
swayc_t * ws = workspace_by_name ( ws_name ) ;
swayc_t * ws = workspace_by_name ( ws_name ) ;
if ( ws = = NULL ) {
if ( ws = = NULL ) {
ws = workspace_create ( ws_name ) ;
ws = workspace_create ( ws_name ) ;
}
move_container_to ( view , get_focused_container ( ws ) ) ;
} else {
return cmd_results_new ( CMD_INVALID , " move " , expected_syntax ) ;
}
}
move_container_to ( view , get_focused_container ( ws ) ) ;
} else if ( strcasecmp ( argv [ 0 ] , " scratchpad " ) = = 0 ) {
} else if ( strcasecmp ( argv [ 0 ] , " scratchpad " ) = = 0 ) {
// move scratchpad ...
if ( view - > type ! = C_CONTAINER & & view - > type ! = C_VIEW ) {
if ( view - > type ! = C_CONTAINER & & view - > type ! = C_VIEW ) {
return cmd_results_new ( CMD_FAILURE , " move " , " Can only move containers and views. " ) ;
return cmd_results_new ( CMD_FAILURE , " move scratchpad " , " Can only move containers and views. " ) ;
}
}
swayc_t * view = get_focused_container ( & root_container ) ;
swayc_t * view = get_focused_container ( & root_container ) ;
int i ;
int i ;
@ -554,8 +558,7 @@ static struct cmd_results *cmd_move(int argc, char **argv) {
}
}
set_focused_container ( focused ) ;
set_focused_container ( focused ) ;
} else {
} else {
return cmd_results_new ( CMD_INVALID , " move " ,
return cmd_results_new ( CMD_INVALID , " move " , expected_syntax ) ;
" Expected 'move <left|right|up|down>' or 'move <container|window> to workspace <name>' " ) ;
}
}
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
}
}