shell: Give keyboard focus to top surface when current keyboard focus goes away

dev
Kristian Høgsberg 13 years ago
parent 2f5faff7f9
commit e377822c64
  1. 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 *state = container_of(listener,
struct focus_state, struct focus_state,
surface_destroy_listener); surface_destroy_listener);
struct desktop_shell *shell;
struct weston_surface *surface, *next;
wl_list_remove(&state->link); next = NULL;
focus_state_destroy(state); 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 * static struct focus_state *

Loading…
Cancel
Save