push all parents of focused container in focus stack

This commit is contained in:
Tony Crisci 2018-04-08 11:34:38 -04:00
parent 9db859585e
commit 46280460a5

View File

@ -413,10 +413,23 @@ void seat_set_focus_warp(struct sway_seat *seat,
if (container) { if (container) {
struct sway_seat_container *seat_con = struct sway_seat_container *seat_con =
seat_container_from_container(seat, container); seat_container_from_container(seat, container);
if (!seat_con) { if (seat_con == NULL) {
return; return;
} }
// put all the anscestors of this container on top of the focus stack
struct sway_seat_container *parent =
seat_container_from_container(seat,
seat_con->container->parent);
while (parent) {
wl_list_remove(&parent->link);
wl_list_insert(&seat->focus_stack, &parent->link);
parent =
seat_container_from_container(seat,
parent->container->parent);
}
wl_list_remove(&seat_con->link); wl_list_remove(&seat_con->link);
wl_list_insert(&seat->focus_stack, &seat_con->link); wl_list_insert(&seat->focus_stack, &seat_con->link);