diff --git a/include/labwc.h b/include/labwc.h index df9e8012..974381d1 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -240,7 +240,7 @@ void keyboard_init(struct seat *seat); void seat_init(struct server *server); void seat_finish(struct server *server); -void seat_focus_surface(struct wlr_seat *seat, struct wlr_surface *surface); +void seat_focus_surface(struct seat *seat, struct wlr_surface *surface); void interactive_begin(struct view *view, enum cursor_mode mode, uint32_t edges); diff --git a/src/desktop.c b/src/desktop.c index 371432f8..d818accc 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -68,7 +68,7 @@ void desktop_focus_view(struct seat *seat, struct view *view) { if (!view) { - seat_focus_surface(seat->seat, NULL); + seat_focus_surface(seat, NULL); return; } if (view->minimized) { @@ -87,7 +87,7 @@ desktop_focus_view(struct seat *seat, struct view *view) } move_to_front(view); set_activated(view->surface, true); - seat_focus_surface(seat->seat, view->surface); + seat_focus_surface(seat, view->surface); move_xwayland_sub_views_to_front(view); } } diff --git a/src/seat.c b/src/seat.c index d9a09b49..137a5318 100644 --- a/src/seat.c +++ b/src/seat.c @@ -2,8 +2,6 @@ #include #include "labwc.h" -static struct seat *current_seat; - static void input_device_destroy(struct wl_listener *listener, void *data) { @@ -80,7 +78,6 @@ seat_init(struct server *server) wlr_log(WLR_ERROR, "cannot allocate seat"); exit(EXIT_FAILURE); } - current_seat = seat; wl_list_init(&seat->inputs); seat->new_input.notify = new_input_notify; @@ -118,13 +115,13 @@ seat_finish(struct server *server) } void -seat_focus_surface(struct wlr_seat *seat, struct wlr_surface *surface) +seat_focus_surface(struct seat *seat, struct wlr_surface *surface) { if (!surface) { - wlr_seat_keyboard_notify_clear_focus(seat); + wlr_seat_keyboard_notify_clear_focus(seat->seat); return; } - struct wlr_keyboard *kb = ¤t_seat->keyboard_group->keyboard; - wlr_seat_keyboard_notify_enter(seat, surface, kb->keycodes, + struct wlr_keyboard *kb = &seat->keyboard_group->keyboard; + wlr_seat_keyboard_notify_enter(seat->seat, surface, kb->keycodes, kb->num_keycodes, &kb->modifiers); } diff --git a/src/xwayland-unmanaged.c b/src/xwayland-unmanaged.c index 606f28b6..a9855d35 100644 --- a/src/xwayland-unmanaged.c +++ b/src/xwayland-unmanaged.c @@ -38,8 +38,7 @@ unmanaged_handle_map(struct wl_listener *listener, void *data) unmanaged->ly = xsurface->y; if (wlr_xwayland_or_surface_wants_focus(xsurface)) { - struct wlr_seat *seat = unmanaged->server->seat.seat; - seat_focus_surface(seat, xsurface->surface); + seat_focus_surface(&unmanaged->server->seat, xsurface->surface); } } @@ -52,8 +51,8 @@ unmanaged_handle_unmap(struct wl_listener *listener, void *data) wl_list_remove(&unmanaged->link); wl_list_remove(&unmanaged->commit.link); - struct wlr_seat *seat = unmanaged->server->seat.seat; - if (seat->keyboard_state.focused_surface == xsurface->surface) { + struct seat *seat = &unmanaged->server->seat; + if (seat->seat->keyboard_state.focused_surface == xsurface->surface) { struct xwayland_unmanaged *u; struct wl_list *list = &unmanaged->server->unmanaged_surfaces; wl_list_for_each (u, list, link) {