From e400700a4a879f0511da3c73bb01b260daf68d85 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Tue, 6 Oct 2020 21:31:01 +0100 Subject: [PATCH] seat: refactor seat_focus_surface() --- include/labwc.h | 4 +++- src/desktop.c | 2 +- src/seat.c | 7 +++---- src/xwayland-unmanaged.c | 6 ++++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/labwc.h b/include/labwc.h index 622247a1..13d6502c 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -235,10 +235,12 @@ struct view *desktop_view_at(struct server *server, double lx, double ly, double *sy, int *view_area); void cursor_init(struct seat *seat); + void keyboard_init(struct seat *seat); + void seat_init(struct server *server); void seat_finish(struct server *server); -void seat_focus_surface(struct wlr_surface *surface); +void seat_focus_surface(struct wlr_seat *seat, struct wlr_surface *surface); struct wlr_surface *seat_focused_surface(void); void interactive_begin(struct view *view, enum cursor_mode mode, diff --git a/src/desktop.c b/src/desktop.c index bf5d38bb..09f2f8d9 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -93,7 +93,7 @@ void desktop_focus_view(struct view *view) { if (!view) { - seat_focus_surface(NULL); + seat_focus_surface(view->server->seat.seat, NULL); return; } if (view->minimized) { diff --git a/src/seat.c b/src/seat.c index 3ebf3a6d..1fea72f7 100644 --- a/src/seat.c +++ b/src/seat.c @@ -118,15 +118,14 @@ seat_finish(struct server *server) } void -seat_focus_surface(struct wlr_surface *surface) +seat_focus_surface(struct wlr_seat *seat, struct wlr_surface *surface) { - struct wlr_seat *wlr_seat = current_seat->seat; if (!surface) { - wlr_seat_keyboard_notify_clear_focus(wlr_seat); + wlr_seat_keyboard_notify_clear_focus(seat); return; } struct wlr_keyboard *kb = ¤t_seat->keyboard_group->keyboard; - wlr_seat_keyboard_notify_enter(wlr_seat, surface, kb->keycodes, + wlr_seat_keyboard_notify_enter(seat, surface, kb->keycodes, kb->num_keycodes, &kb->modifiers); } diff --git a/src/xwayland-unmanaged.c b/src/xwayland-unmanaged.c index 0bd5e572..74895a21 100644 --- a/src/xwayland-unmanaged.c +++ b/src/xwayland-unmanaged.c @@ -38,7 +38,8 @@ unmanaged_handle_map(struct wl_listener *listener, void *data) unmanaged->ly = xsurface->y; if (wlr_xwayland_or_surface_wants_focus(xsurface)) { - seat_focus_surface(xsurface->surface); + struct wlr_seat *seat = unmanaged->server->seat.seat; + seat_focus_surface(seat, xsurface->surface); } } @@ -59,7 +60,8 @@ unmanaged_handle_unmap(struct wl_listener *listener, void *data) if (!wlr_xwayland_or_surface_wants_focus(prev)) { continue; } - seat_focus_surface(prev->surface); + struct wlr_seat *seat = unmanaged->server->seat.seat; + seat_focus_surface(seat, prev->surface); return; } }