diff options
author | Kenny Levinsen <kl@kl.wtf> | 2019-08-29 17:22:01 +0200 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-09-01 00:03:18 +0300 |
commit | b2ee5bc05d1f112e2f80a50749f91d58fc89b167 (patch) | |
tree | fb2f08179ea08590ef512e34fc413020f75c6a9e /sway/desktop | |
parent | 07d7af593d89e56cad664fe03673ccb79da21380 (diff) | |
download | sway-b2ee5bc05d1f112e2f80a50749f91d58fc89b167.tar.xz |
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.
Diffstat (limited to 'sway/desktop')
-rw-r--r-- | sway/desktop/layer_shell.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c index a6239bea..60270a42 100644 --- a/sway/desktop/layer_shell.c +++ b/sway/desktop/layer_shell.c @@ -301,9 +301,11 @@ static void unmap(struct sway_layer_surface *sway_layer) { output_damage_surface(output, sway_layer->geo.x, sway_layer->geo.y, sway_layer->layer_surface->surface, true); - struct sway_seat *seat = input_manager_current_seat(); - if (seat->focused_layer == sway_layer->layer_surface) { - seat_set_focus_layer(seat, NULL); + struct sway_seat *seat; + wl_list_for_each(seat, &server.input->seats, link) { + if (seat->focused_layer == sway_layer->layer_surface) { + seat_set_focus_layer(seat, NULL); + } } cursor_rebase_all(); |