mirror of
https://github.com/swaywm/sway.git
synced 2026-04-29 06:46:22 -04:00
Merge eb231a9e1c into 050704ab23
This commit is contained in:
commit
3c7eac4e9c
3 changed files with 31 additions and 5 deletions
|
|
@ -48,6 +48,7 @@ void swap_container(swayc_t *a, swayc_t *b);
|
||||||
// 2 Containers geometry are swapped, used with `swap_container`
|
// 2 Containers geometry are swapped, used with `swap_container`
|
||||||
void swap_geometry(swayc_t *a, swayc_t *b);
|
void swap_geometry(swayc_t *a, swayc_t *b);
|
||||||
|
|
||||||
|
void move_floating_container(swayc_t *container, int dx, int dy);
|
||||||
void move_container(swayc_t* container, enum movement_direction direction);
|
void move_container(swayc_t* container, enum movement_direction direction);
|
||||||
void move_container_to(swayc_t* container, swayc_t* destination);
|
void move_container_to(swayc_t* container, swayc_t* destination);
|
||||||
void move_workspace_to(swayc_t* workspace, swayc_t* destination);
|
void move_workspace_to(swayc_t* workspace, swayc_t* destination);
|
||||||
|
|
|
||||||
|
|
@ -1012,20 +1012,36 @@ 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 "
|
const char* expected_syntax = "Expected 'move <left|right|up|down> [<px> px]' or "
|
||||||
"'move <container|window> to workspace <name>' or "
|
"'move <container|window> to workspace <name>' or "
|
||||||
"'move <container|window|workspace> to output <name|direction>' or "
|
"'move <container|window|workspace> to output <name|direction>' or "
|
||||||
"'move position mouse'";
|
"'move position mouse'";
|
||||||
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) {
|
||||||
move_container(view, MOVE_LEFT);
|
if (argc == 3 && !strcasecmp(argv[2], "px")) {
|
||||||
|
move_floating_container(view, -1 * atoi(argv[1]), 0);
|
||||||
|
} else {
|
||||||
|
move_container(view, MOVE_LEFT);
|
||||||
|
}
|
||||||
} else if (strcasecmp(argv[0], "right") == 0) {
|
} else if (strcasecmp(argv[0], "right") == 0) {
|
||||||
move_container(view, MOVE_RIGHT);
|
if (argc == 3 && !strcasecmp(argv[2], "px")) {
|
||||||
|
move_floating_container(view, atoi(argv[1]), 0);
|
||||||
|
} else {
|
||||||
|
move_container(view, MOVE_RIGHT);
|
||||||
|
}
|
||||||
} else if (strcasecmp(argv[0], "up") == 0) {
|
} else if (strcasecmp(argv[0], "up") == 0) {
|
||||||
move_container(view, MOVE_UP);
|
if (argc == 3 && !strcasecmp(argv[2], "px")) {
|
||||||
|
move_floating_container(view, 0, -1 * atoi(argv[1]));
|
||||||
|
} else {
|
||||||
|
move_container(view, MOVE_UP);
|
||||||
|
}
|
||||||
} else if (strcasecmp(argv[0], "down") == 0) {
|
} else if (strcasecmp(argv[0], "down") == 0) {
|
||||||
move_container(view, MOVE_DOWN);
|
if (argc == 3 && !strcasecmp(argv[2], "px")) {
|
||||||
|
move_floating_container(view, 0, atoi(argv[1]));
|
||||||
|
} else {
|
||||||
|
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 ...
|
// "move container ...
|
||||||
if ((error = checkarg(argc, "move container/window", EXPECTED_AT_LEAST, 4))) {
|
if ((error = checkarg(argc, "move container/window", EXPECTED_AT_LEAST, 4))) {
|
||||||
|
|
|
||||||
|
|
@ -227,6 +227,15 @@ void swap_geometry(swayc_t *a, swayc_t *b) {
|
||||||
b->height = h;
|
b->height = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void move_floating_container(swayc_t *container, int dx, int dy) {
|
||||||
|
if (!sway_assert(container->is_floating, "Container has to be floating")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
container->x += dx;
|
||||||
|
container->y += dy;
|
||||||
|
update_geometry(container);
|
||||||
|
}
|
||||||
|
|
||||||
void move_container(swayc_t *container, enum movement_direction dir) {
|
void move_container(swayc_t *container, enum movement_direction dir) {
|
||||||
enum swayc_layouts layout;
|
enum swayc_layouts layout;
|
||||||
if (container->is_floating
|
if (container->is_floating
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue