From 01117db6d9c50572646f9c49e50e02473129c7d4 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 6 Sep 2018 11:53:55 +1000 Subject: [PATCH] Fix crash when moving view across outputs It was incorrectly determining that the container being moved and the destination had the same parent, which resulted in tree corruption. Both parents can be NULL but the containers may belong to different workspaces. To reproduce, create layout H[V[view] view] in one workspace then move a view left or right from another output into that workspace. --- sway/commands/move.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sway/commands/move.c b/sway/commands/move.c index 7b503624..59f1cf78 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c @@ -117,7 +117,8 @@ static void container_move_to_container_from_direction( struct sway_container *container, struct sway_container *destination, enum movement_direction move_dir) { if (destination->view) { - if (destination->parent == container->parent) { + if (destination->parent == container->parent && + destination->workspace == container->workspace) { wlr_log(WLR_DEBUG, "Swapping siblings"); list_t *siblings = container_get_siblings(container); int container_index = list_find(siblings, container);