This commit is contained in:
hack-heart 2026-04-12 16:05:05 +01:00 committed by GitHub
commit 1af399d833
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1137,10 +1137,12 @@ static void seat_set_workspace_focus(struct sway_seat *seat, struct sway_node *n
if (node == NULL) { if (node == NULL) {
// Close any popups on the old focus // Close any popups on the old focus
if (node_is_view(last_focus)) { if (last_focus) {
view_close_popups(last_focus->sway_container->view); if (node_is_view(last_focus)) {
view_close_popups(last_focus->sway_container->view);
}
seat_send_unfocus(last_focus, seat);
} }
seat_send_unfocus(last_focus, seat);
sway_input_method_relay_set_focus(&seat->im_relay, NULL); sway_input_method_relay_set_focus(&seat->im_relay, NULL);
seat->has_focus = false; seat->has_focus = false;
return; return;
@ -1301,7 +1303,9 @@ void seat_set_focus_surface(struct sway_seat *seat,
struct wlr_surface *surface, bool unfocus) { struct wlr_surface *surface, bool unfocus) {
if (seat->has_focus && unfocus) { if (seat->has_focus && unfocus) {
struct sway_node *focus = seat_get_focus(seat); struct sway_node *focus = seat_get_focus(seat);
seat_send_unfocus(focus, seat); if (focus) {
seat_send_unfocus(focus, seat);
}
seat->has_focus = false; seat->has_focus = false;
} }
@ -1350,7 +1354,9 @@ void seat_unfocus_unless_client(struct sway_seat *seat, struct wl_client *client
} }
if (seat->has_focus) { if (seat->has_focus) {
struct sway_node *focus = seat_get_focus(seat); struct sway_node *focus = seat_get_focus(seat);
if (node_is_view(focus) && wl_resource_get_client( if (!focus) {
seat->has_focus = false;
} else if (node_is_view(focus) && wl_resource_get_client(
focus->sway_container->view->surface->resource) != client) { focus->sway_container->view->surface->resource) != client) {
seat_set_focus(seat, NULL); seat_set_focus(seat, NULL);
} }