add keys array param to seat keyboard enter

This commit is contained in:
Tony Crisci 2017-09-23 14:40:56 -04:00
parent 9cde828c94
commit 84a8f1b42d
3 changed files with 10 additions and 8 deletions

View File

@ -129,7 +129,10 @@ static void example_set_focused_surface(struct sample_state *sample,
} }
if (surface) { if (surface) {
wlr_seat_keyboard_enter(sample->wl_seat, surface->surface); // TODO: send array of currently pressed keys
struct wl_array keys;
wl_array_init(&keys);
wlr_seat_keyboard_enter(sample->wl_seat, surface->surface, keys);
} else { } else {
wlr_seat_keyboard_clear_focus(sample->wl_seat); wlr_seat_keyboard_clear_focus(sample->wl_seat);
} }

View File

@ -128,10 +128,10 @@ void wlr_seat_pointer_send_axis(struct wlr_seat *wlr_seat, uint32_t time,
/** /**
* Send a keyboard enter event to the given surface and consider it to be the * Send a keyboard enter event to the given surface and consider it to be the
* focused surface for the keyboard. This will send a leave event to the last * focused surface for the keyboard. This will send a leave event to the last
* surface that was entered. * surface that was entered. Pass an array of currently pressed keys.
*/ */
void wlr_seat_keyboard_enter(struct wlr_seat *wlr_seat, void wlr_seat_keyboard_enter(struct wlr_seat *wlr_seat,
struct wlr_surface *surface); struct wlr_surface *surface, struct wl_array keys);
/** /**
* Clear the focused surface for the keyboard and leave all entered surfaces. * Clear the focused surface for the keyboard and leave all entered surfaces.

View File

@ -414,7 +414,7 @@ static void handle_keyboard_focus_resource_destroyed(
} }
void wlr_seat_keyboard_enter(struct wlr_seat *wlr_seat, void wlr_seat_keyboard_enter(struct wlr_seat *wlr_seat,
struct wlr_surface *surface) { struct wlr_surface *surface, struct wl_array keys) {
if (wlr_seat->keyboard_state.focused_surface == surface) { if (wlr_seat->keyboard_state.focused_surface == surface) {
// this surface already got an enter notify // this surface already got an enter notify
return; return;
@ -442,9 +442,6 @@ void wlr_seat_keyboard_enter(struct wlr_seat *wlr_seat,
// enter the current surface // enter the current surface
if (handle && handle->keyboard) { if (handle && handle->keyboard) {
uint32_t serial = wl_display_next_serial(wlr_seat->display); uint32_t serial = wl_display_next_serial(wlr_seat->display);
// TODO: send currently pressed keys
struct wl_array keys;
wl_array_init(&keys);
wl_keyboard_send_enter(handle->keyboard, serial, wl_keyboard_send_enter(handle->keyboard, serial,
surface->resource, &keys); surface->resource, &keys);
@ -475,7 +472,9 @@ void wlr_seat_keyboard_enter(struct wlr_seat *wlr_seat,
} }
void wlr_seat_keyboard_clear_focus(struct wlr_seat *wlr_seat) { void wlr_seat_keyboard_clear_focus(struct wlr_seat *wlr_seat) {
wlr_seat_keyboard_enter(wlr_seat, NULL); struct wl_array keys;
wl_array_init(&keys);
wlr_seat_keyboard_enter(wlr_seat, NULL, keys);
} }
static bool wlr_seat_keyboard_has_focus_resource(struct wlr_seat *wlr_seat) { static bool wlr_seat_keyboard_has_focus_resource(struct wlr_seat *wlr_seat) {