diff options
author | Ben Jargowsky <benjar63@gmail.com> | 2022-04-05 23:22:15 -0700 |
---|---|---|
committer | Ben Jargowsky <benjar63@gmail.com> | 2022-05-09 14:00:21 +0200 |
commit | e0d310fd84eb4fa34527f6695c998ce9f5eb56d6 (patch) | |
tree | 6784f1b43279ee33168c228467c753873c8c1ee1 | |
parent | 3a4b7d104ff8bfc14862b7e41bcacb35677306a4 (diff) |
Handle 'wlr_seat_get_keyboard' possibly returning null.
-rw-r--r-- | dwl.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -600,8 +600,11 @@ arrangelayers(Monitor *m) layersurface->layer_surface->mapped) { /* Deactivate the focused client. */ focusclient(NULL, 0); - wlr_seat_keyboard_notify_enter(seat, layersurface->layer_surface->surface, - kb->keycodes, kb->num_keycodes, &kb->modifiers); + if (kb) + wlr_seat_keyboard_notify_enter(seat, layersurface->layer_surface->surface, + kb->keycodes, kb->num_keycodes, &kb->modifiers); + else + wlr_seat_keyboard_notify_enter(seat, layersurface->layer_surface->surface, NULL, 0, NULL); return; } } @@ -641,7 +644,7 @@ buttonpress(struct wl_listener *listener, void *data) focusclient(c, 1); keyboard = wlr_seat_get_keyboard(seat); - mods = wlr_keyboard_get_modifiers(keyboard); + mods = keyboard ? wlr_keyboard_get_modifiers(keyboard) : 0; for (b = buttons; b < END(buttons); b++) { if (CLEANMASK(mods) == CLEANMASK(b->mod) && event->button == b->button && b->func) { @@ -1146,8 +1149,11 @@ focusclient(Client *c, int lift) /* Have a client, so focus its top-level wlr_surface */ kb = wlr_seat_get_keyboard(seat); - wlr_seat_keyboard_notify_enter(seat, client_surface(c), - kb->keycodes, kb->num_keycodes, &kb->modifiers); + if (kb) + wlr_seat_keyboard_notify_enter(seat, client_surface(c), + kb->keycodes, kb->num_keycodes, &kb->modifiers); + else + wlr_seat_keyboard_notify_enter(seat, client_surface(c), NULL, 0, NULL); /* Activate the new client */ client_activate_surface(client_surface(c), 1); |