seat: refactor seat_focus_surface()

This commit is contained in:
Johan Malm 2020-10-08 20:22:52 +01:00
parent f752610e0b
commit 9342b2b414
4 changed files with 10 additions and 14 deletions

View file

@ -240,7 +240,7 @@ void keyboard_init(struct seat *seat);
void seat_init(struct server *server); void seat_init(struct server *server);
void seat_finish(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, void interactive_begin(struct view *view, enum cursor_mode mode,
uint32_t edges); uint32_t edges);

View file

@ -68,7 +68,7 @@ void
desktop_focus_view(struct seat *seat, struct view *view) desktop_focus_view(struct seat *seat, struct view *view)
{ {
if (!view) { if (!view) {
seat_focus_surface(seat->seat, NULL); seat_focus_surface(seat, NULL);
return; return;
} }
if (view->minimized) { if (view->minimized) {
@ -87,7 +87,7 @@ desktop_focus_view(struct seat *seat, struct view *view)
} }
move_to_front(view); move_to_front(view);
set_activated(view->surface, true); 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); move_xwayland_sub_views_to_front(view);
} }
} }

View file

@ -2,8 +2,6 @@
#include <wlr/util/log.h> #include <wlr/util/log.h>
#include "labwc.h" #include "labwc.h"
static struct seat *current_seat;
static void static void
input_device_destroy(struct wl_listener *listener, void *data) 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"); wlr_log(WLR_ERROR, "cannot allocate seat");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
current_seat = seat;
wl_list_init(&seat->inputs); wl_list_init(&seat->inputs);
seat->new_input.notify = new_input_notify; seat->new_input.notify = new_input_notify;
@ -118,13 +115,13 @@ seat_finish(struct server *server)
} }
void void
seat_focus_surface(struct wlr_seat *seat, struct wlr_surface *surface) seat_focus_surface(struct seat *seat, struct wlr_surface *surface)
{ {
if (!surface) { if (!surface) {
wlr_seat_keyboard_notify_clear_focus(seat); wlr_seat_keyboard_notify_clear_focus(seat->seat);
return; return;
} }
struct wlr_keyboard *kb = &current_seat->keyboard_group->keyboard; struct wlr_keyboard *kb = &seat->keyboard_group->keyboard;
wlr_seat_keyboard_notify_enter(seat, surface, kb->keycodes, wlr_seat_keyboard_notify_enter(seat->seat, surface, kb->keycodes,
kb->num_keycodes, &kb->modifiers); kb->num_keycodes, &kb->modifiers);
} }

View file

@ -38,8 +38,7 @@ unmanaged_handle_map(struct wl_listener *listener, void *data)
unmanaged->ly = xsurface->y; unmanaged->ly = xsurface->y;
if (wlr_xwayland_or_surface_wants_focus(xsurface)) { if (wlr_xwayland_or_surface_wants_focus(xsurface)) {
struct wlr_seat *seat = unmanaged->server->seat.seat; seat_focus_surface(&unmanaged->server->seat, xsurface->surface);
seat_focus_surface(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->link);
wl_list_remove(&unmanaged->commit.link); wl_list_remove(&unmanaged->commit.link);
struct wlr_seat *seat = unmanaged->server->seat.seat; struct seat *seat = &unmanaged->server->seat;
if (seat->keyboard_state.focused_surface == xsurface->surface) { if (seat->seat->keyboard_state.focused_surface == xsurface->surface) {
struct xwayland_unmanaged *u; struct xwayland_unmanaged *u;
struct wl_list *list = &unmanaged->server->unmanaged_surfaces; struct wl_list *list = &unmanaged->server->unmanaged_surfaces;
wl_list_for_each (u, list, link) { wl_list_for_each (u, list, link) {