mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-10-15 14:42:26 +00:00
shell: Give keyboard focus to top surface when current keyboard focus goes away
This commit is contained in:
parent
2f5faff7f9
commit
e377822c64
20
src/shell.c
20
src/shell.c
|
@ -385,9 +385,25 @@ focus_state_surface_destroy(struct wl_listener *listener, void *data)
|
|||
struct focus_state *state = container_of(listener,
|
||||
struct focus_state,
|
||||
surface_destroy_listener);
|
||||
struct desktop_shell *shell;
|
||||
struct weston_surface *surface, *next;
|
||||
|
||||
wl_list_remove(&state->link);
|
||||
focus_state_destroy(state);
|
||||
next = NULL;
|
||||
wl_list_for_each(surface, &state->ws->layer.surface_list, layer_link) {
|
||||
if (surface == state->keyboard_focus)
|
||||
continue;
|
||||
|
||||
next = surface;
|
||||
break;
|
||||
}
|
||||
|
||||
if (next) {
|
||||
shell = state->seat->compositor->shell_interface.shell;
|
||||
activate(shell, next, state->seat);
|
||||
} else {
|
||||
wl_list_remove(&state->link);
|
||||
focus_state_destroy(state);
|
||||
}
|
||||
}
|
||||
|
||||
static struct focus_state *
|
||||
|
|
Loading…
Reference in a new issue