aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSevz <leohdz172@protonmail.com>2022-05-09 13:18:19 -0500
committerGitHub <noreply@github.com>2022-05-09 13:18:19 -0500
commit07d56c6d7ba0a35f83d4de4895c04e31edadbdb1 (patch)
tree6784f1b43279ee33168c228467c753873c8c1ee1
parent3a4b7d104ff8bfc14862b7e41bcacb35677306a4 (diff)
parente0d310fd84eb4fa34527f6695c998ce9f5eb56d6 (diff)
Merge pull request #230 from BenJarg/null-wlr_seat_get_keyboard
Handle 'wlr_seat_get_keyboard' possibly returning null.
-rw-r--r--dwl.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/dwl.c b/dwl.c
index b675b67..74b11a8 100644
--- a/dwl.c
+++ b/dwl.c
@@ -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);