libweston/input: Move activation signal logic out of keyboard focus function

Currently, and for legacy reasons, weston_seat_set_keyboard_focus() contains
logic related to surface activation. Since this function is always called from
weston_view_activate_input(), move that code there where it seems more
appropriate.

This will help us in subsequent commits by avoiding to have to change the
signature of weston_seat_set_keyboard_focus(), which would make that function
even more awkward than it currently is.

Signed-off-by: Sergio Gómez <sergio.g.delreal@gmail.com>
This commit is contained in:
Sergio Gómez 2023-03-29 10:30:23 -05:00 committed by Marius Vlad
parent 8cf4d79be7
commit d11732c0fd
1 changed files with 9 additions and 10 deletions

View File

@ -2342,6 +2342,7 @@ weston_view_activate_input(struct weston_view *view,
uint32_t flags) uint32_t flags)
{ {
struct weston_compositor *compositor = seat->compositor; struct weston_compositor *compositor = seat->compositor;
struct weston_surface_activation_data activation_data;
if (flags & WESTON_ACTIVATE_FLAG_CLICKED) { if (flags & WESTON_ACTIVATE_FLAG_CLICKED) {
view->click_to_activate_serial = view->click_to_activate_serial =
@ -2349,6 +2350,14 @@ weston_view_activate_input(struct weston_view *view,
} }
weston_seat_set_keyboard_focus(seat, view->surface); weston_seat_set_keyboard_focus(seat, view->surface);
inc_activate_serial(compositor);
activation_data = (struct weston_surface_activation_data) {
.surface = view->surface,
.seat = seat,
};
wl_signal_emit(&compositor->activate_signal, &activation_data);
} }
WL_EXPORT void WL_EXPORT void
@ -4609,22 +4618,12 @@ WL_EXPORT void
weston_seat_set_keyboard_focus(struct weston_seat *seat, weston_seat_set_keyboard_focus(struct weston_seat *seat,
struct weston_surface *surface) struct weston_surface *surface)
{ {
struct weston_compositor *compositor = seat->compositor;
struct weston_keyboard *keyboard = weston_seat_get_keyboard(seat); struct weston_keyboard *keyboard = weston_seat_get_keyboard(seat);
struct weston_surface_activation_data activation_data;
if (keyboard && keyboard->focus != surface) { if (keyboard && keyboard->focus != surface) {
weston_keyboard_set_focus(keyboard, surface); weston_keyboard_set_focus(keyboard, surface);
wl_data_device_set_keyboard_focus(seat); wl_data_device_set_keyboard_focus(seat);
} }
inc_activate_serial(compositor);
activation_data = (struct weston_surface_activation_data) {
.surface = surface,
.seat = seat,
};
wl_signal_emit(&compositor->activate_signal, &activation_data);
} }
static void static void