Fix crash when flattening container after moving

container_flatten removes the container from the tree (via
container_replace) before destroying it. When destroying, the recent
changes to handle_seat_node_destroy incorrectly assumes that the
container has a parent.

This adds a check for destroying a container which is no longer in the
tree. If this is the case, focus does not need to be changed.
This commit is contained in:
Ryan Dwyer 2018-10-05 16:39:20 +10:00
parent c8d1f376d3
commit 44b550298e

View File

@ -157,6 +157,11 @@ static void handle_seat_node_destroy(struct wl_listener *listener, void *data) {
seat_node_destroy(seat_node); seat_node_destroy(seat_node);
if (!parent) {
// Destroying a container that is no longer in the tree
return;
}
// Find new focus_inactive (ie. sibling, or workspace if no siblings left) // Find new focus_inactive (ie. sibling, or workspace if no siblings left)
struct sway_node *next_focus = NULL; struct sway_node *next_focus = NULL;
while (next_focus == NULL) { while (next_focus == NULL) {