Ensure that seat->focused_layer is cleared on unmap

The current seat may have changed between the last focus change and
this unmap, so we need to scan through all seats to find our layer.
This commit is contained in:
Kenny Levinsen 2019-08-29 17:22:01 +02:00 committed by Simon Ser
parent 07d7af593d
commit b2ee5bc05d

View file

@ -301,10 +301,12 @@ static void unmap(struct sway_layer_surface *sway_layer) {
output_damage_surface(output, sway_layer->geo.x, sway_layer->geo.y, output_damage_surface(output, sway_layer->geo.x, sway_layer->geo.y,
sway_layer->layer_surface->surface, true); sway_layer->layer_surface->surface, true);
struct sway_seat *seat = input_manager_current_seat(); struct sway_seat *seat;
wl_list_for_each(seat, &server.input->seats, link) {
if (seat->focused_layer == sway_layer->layer_surface) { if (seat->focused_layer == sway_layer->layer_surface) {
seat_set_focus_layer(seat, NULL); seat_set_focus_layer(seat, NULL);
} }
}
cursor_rebase_all(); cursor_rebase_all();
} }