mirror of
https://github.com/swaywm/sway.git
synced 2026-04-16 08:21:30 -04:00
Merge 8420113af5 into 81246fc6dc
This commit is contained in:
commit
1af399d833
1 changed files with 11 additions and 5 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue