Fix crash when deleting last child in a tabbed or stacked container

There was no `current` child because the container was destroyed. This
makes it fall back to looking in the parent's current children list.
This commit is contained in:
Ryan Dwyer 2018-06-23 17:47:28 +10:00
parent b11c9199a6
commit 32b865e610
3 changed files with 39 additions and 12 deletions

View file

@ -118,6 +118,17 @@ struct sway_container *seat_get_focus_inactive_view(struct sway_seat *seat,
struct sway_container *seat_get_active_child(struct sway_seat *seat,
struct sway_container *container);
/**
* Return the immediate child of container which was most recently focused, with
* fallback to selecting the child in the parent's `current` (rendered) children
* list.
*
* This is useful for when a tabbed container and its children are destroyed but
* still being rendered, and we have to render an appropriate child.
*/
struct sway_container *seat_get_active_current_child(struct sway_seat *seat,
struct sway_container *container);
/**
* Iterate over the focus-inactive children of the container calling the
* function on each.