From 6345000b929293a2917a1a08a6d2751020d36e3c Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Thu, 11 Jul 2019 01:42:43 +0200 Subject: seat: Move focus back to first shell surface when unfocusing layer surface --- rootston/seat.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rootston/seat.c b/rootston/seat.c index bd15a1b0..719fc352 100644 --- a/rootston/seat.c +++ b/rootston/seat.c @@ -1441,7 +1441,15 @@ void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view) { void roots_seat_set_focus_layer(struct roots_seat *seat, struct wlr_layer_surface_v1 *layer) { if (!layer) { - seat->focused_layer = NULL; + if (seat->focused_layer) { + seat->focused_layer = NULL; + if (!wl_list_empty(&seat->views)) { + // Focus first view + struct roots_seat_view *first_seat_view = wl_container_of( + seat->views.next, first_seat_view, link); + roots_seat_set_focus(seat, first_seat_view->view); + } + } return; } struct wlr_keyboard *keyboard = wlr_seat_get_keyboard(seat->seat); -- cgit v1.2.3