desktop: try harder to avoid focusing unfocusable views

Make desktop_focus_view() do nothing if the view is not focusable.
This commit is contained in:
John Lindgren 2023-09-23 12:20:44 -04:00 committed by Johan Malm
parent 7e72bf975f
commit cae96b0cce

View file

@ -38,14 +38,16 @@ void
desktop_focus_view(struct view *view, bool raise)
{
assert(view);
if (!view_isfocusable(view)) {
return;
}
/*
* Guard against views with no mapped surfaces when handling
* 'request_activate' and 'request_minimize'.
* See notes by view_isfocusable()
* view_isfocusable() should return false for those views.
*/
if (!view->surface) {
return;
}
assert(view->surface);
struct server *server = view->server;
if (input_inhibit_blocks_surface(&server->seat, view->surface->resource)
@ -62,9 +64,11 @@ desktop_focus_view(struct view *view, bool raise)
return;
}
if (!view->mapped) {
return;
}
/*
* view_isfocusable() should return false for any views that are
* neither mapped nor minimized.
*/
assert(view->mapped);
/*
* Switch workspace if necessary to make the view visible