Skip to content

Commit

Permalink
Make move_to_container insert at the correct index.
Browse files Browse the repository at this point in the history
  • Loading branch information
ccdunder committed Nov 23, 2024
1 parent 5312376 commit a76bbea
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion sway/commands/move.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,26 @@ static void container_move_to_container(struct sway_container *container,
if (destination->view) {
container_add_sibling(destination, container, 1);
} else {
container_add_child(destination, container);
/* For split containers, we use the currently focused container within it.
* This allows setting marks on, e.g., tabbed containers which will move
* con to a new tab behind the focused tab. */
sway_log(SWAY_DEBUG, "target is a split container, descending to the currently focused child.");
struct sway_node *focused = seat_get_active_tiling_child(
config->handler_context.seat, &destination->node);
if (!focused || focused == &destination->node) {
// The container has no children
container_add_child(destination, container);
return;
}
struct sway_container *target = focused->sway_container;
int index = container_sibling_index(target) + 1;
if (target->pending.parent) {
container_insert_child(target->pending.parent, container, index);
} else {
// TODO: This branch is unreachable until workspaces can be marked.
// Issue url: https://github.com/swaywm/sway/issues/8474
workspace_insert_tiling(target->pending.workspace, container, index);
}
}

if (container->view) {
Expand Down

0 comments on commit a76bbea

Please sign in to comment.