~ruther/dwl

07d56c6d7ba0a35f83d4de4895c04e31edadbdb1 — Sevz 2 years ago 3a4b7d1 + e0d310f
Merge pull request #230 from BenJarg/null-wlr_seat_get_keyboard

Handle 'wlr_seat_get_keyboard' possibly returning null.
1 files changed, 11 insertions(+), 5 deletions(-)

M dwl.c
M dwl.c => dwl.c +11 -5
@@ 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);

Do not follow this link