diff options
| author | Sevz <leohdz172@protonmail.com> | 2022-05-09 13:18:19 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-09 13:18:19 -0500 | 
| commit | 07d56c6d7ba0a35f83d4de4895c04e31edadbdb1 (patch) | |
| tree | 6784f1b43279ee33168c228467c753873c8c1ee1 | |
| parent | 3a4b7d104ff8bfc14862b7e41bcacb35677306a4 (diff) | |
| parent | e0d310fd84eb4fa34527f6695c998ce9f5eb56d6 (diff) | |
Merge pull request #230 from BenJarg/null-wlr_seat_get_keyboard
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); | 
