diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2019-12-26 19:51:06 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2019-12-26 19:51:06 -0500 |
| commit | 8ef971a1de44fef94deae70337109f632204638a (patch) | |
| tree | 3ac0b3b3c063fb30cf078304733056502868f04f | |
| parent | a9c5cfdae0830dd16d9f7288847723f0202ab76d (diff) | |
layer-shell: refocus if keyboard interactive lost
When arranging layer-shell layers, verify that the currently focused
layer, if any, for each seat is still keyboard interactive. If the layer
is no longer keyboard interactive and there is not a keyboard
interactive overlay or top layer to change the focus to, refocus the
focus inactive node for the seat.
| -rw-r--r-- | sway/desktop/layer_shell.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c index b754b1fa..b6dddff6 100644 --- a/sway/desktop/layer_shell.c +++ b/sway/desktop/layer_shell.c @@ -215,6 +215,9 @@ void arrange_layers(struct sway_output *output) { wl_list_for_each(seat, &server.input->seats, link) { if (topmost != NULL) { seat_set_focus_layer(seat, topmost->layer_surface); + } else if (seat->focused_layer && + !seat->focused_layer->current.keyboard_interactive) { + seat_set_focus_layer(seat, NULL); } } } |
