diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2017-12-10 08:06:43 +0100 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2017-12-10 08:09:33 +0100 |
commit | 542d886984c8c94b4ab57e657d334c5d0e136d7c (patch) | |
tree | 6259b337480346d75d4ed8d5504b0b3c64fc556b | |
parent | b1b1533d94621cf3048a9d74511af172407b44e6 (diff) |
wlr_seat: send keyboard modifiers to the right client on enter
We were previously sending modifiers to the leaving client instead.
Fixes #476.
-rw-r--r-- | types/wlr_seat.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/types/wlr_seat.c b/types/wlr_seat.c index ab3e990d..05ea4745 100644 --- a/types/wlr_seat.c +++ b/types/wlr_seat.c @@ -860,7 +860,6 @@ void wlr_seat_keyboard_enter(struct wlr_seat *seat, surface->resource, &keys); wl_array_release(&keys); - wlr_seat_keyboard_send_modifiers(seat); wlr_seat_client_send_selection(client); } @@ -882,6 +881,12 @@ void wlr_seat_keyboard_enter(struct wlr_seat *seat, seat->keyboard_state.focused_client = client; seat->keyboard_state.focused_surface = surface; + + if (client && client->keyboard && seat->keyboard_state.keyboard) { + // tell new client about any modifier change last, + // as it targets seat->keyboard_state.focused_client + wlr_seat_keyboard_send_modifiers(seat); + } } void wlr_seat_keyboard_notify_enter(struct wlr_seat *seat, struct |