Commit beed13cde8505bccf868f7a6c0ff63305a5541db Parent: a70ba044975c98144424d02b54c2aacfd07a05ca Author: mcol <mcol@posteo.net> Date: 2021-01-30 19:38:37 +0000 Committer: mcol <mcol@posteo.net> Committed: 2021-01-30 19:38:37 +0000 if focussed layer shell is unmapped, focus top view
src/types.h Modified
@@ -62,6 +62,7 @@ struct wlr_layer_shell_v1 *layer_shell; struct wl_listener layer_shell_surface_listener; + struct layer_view *focussed_layer_view; struct wlr_cursor *cursor; struct wlr_xcursor_manager *cursor_manager;
src/layer_shell.c Modified
@@ -71,6 +71,7 @@ wimp.seat, lview->surface->surface, keyboard->keycodes, keyboard->num_keycodes, &keyboard->modifiers ); + wimp.focussed_layer_view = lview; return; } } @@ -95,7 +96,16 @@ struct layer_view *lview = wl_container_of(listener, lview, unmap_listener); lview->surface->mapped = false; layer(lview->output); - wlr_surface_send_enter(lview->surface->surface, lview->surface->output); + + if (wimp.focussed_layer_view == lview) { + struct wlr_keyboard *keyboard = wlr_seat_get_keyboard(wimp.seat); + struct view *view = wl_container_of(wimp.current_desk->views.next, view, link); + wlr_seat_keyboard_notify_enter( + wimp.seat, view->surface->surface, keyboard->keycodes, + keyboard->num_keycodes, &keyboard->modifiers + ); + wimp.focussed_layer_view = NULL; + } } @@ -103,6 +113,7 @@ struct layer_view *lview = wl_container_of(listener, lview, map_listener); lview->surface->mapped = true; layer(lview->output); + wlr_surface_send_enter(lview->surface->surface, lview->surface->output); }