commit 9b828939e5147300bef99820180b7c8de3ba260d
parent 0a4735c50cbdb7cc60f8cdf1d0240bda37d63033
Author: Ryan Dwyer <ryandwyer1@gmail.com>
Date: Sat, 20 Oct 2018 08:49:51 +1000
Fix crash when ending tiling drag
If the container being dragged has a parent that needs to be reaped, it
must be reaped after we've reinserted the dragging container into the
tree. During reaping, handle_seat_node_destroy tries to refocus the
dragging container which isn't possible while it's detached.
Diffstat:
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sway/input/seat.c b/sway/input/seat.c
@@ -1110,9 +1110,6 @@ static void seat_end_move_tiling(struct sway_seat *seat) {
int after = edge != WLR_EDGE_TOP && edge != WLR_EDGE_LEFT;
container_detach(con);
- if (old_parent) {
- container_reap_empty(old_parent);
- }
// Moving container into empty workspace
if (target_node->type == N_WORKSPACE && edge == WLR_EDGE_NONE) {
@@ -1135,6 +1132,10 @@ static void seat_end_move_tiling(struct sway_seat *seat) {
workspace_insert_tiling(new_ws, con, after);
}
+ if (old_parent) {
+ container_reap_empty(old_parent);
+ }
+
// This is a bit dirty, but we'll set the dimensions to that of a sibling.
// I don't think there's any other way to make it consistent without
// changing how we auto-size containers.