~ruther/dwl

63f09d1f23399fefa8f128b6d3144cc891ba73ed — Shugyousha 5 years ago df10c47
Don't pass NULL surfaces to wlr focus functions (#8)

Turns out that this will hit asserts that will abort dwl.
1 files changed, 11 insertions(+), 3 deletions(-)

M dwl.c
M dwl.c => dwl.c +11 -3
@@ 595,9 595,11 @@ focusclient(Client *c, struct wlr_surface *surface, int lift)
	 * If the focused surface has changed, tell the seat to have the
	 * keyboard enter the new surface.  wlroots will keep track of this and
	 * automatically send key events to the appropriate clients.  If surface
	 * is NULL, this will clear focus.
	 * is NULL, we clear the focus instead.
	 */
	if (surface != psurface) {
	if (!surface) {
		wlr_seat_pointer_notify_clear_focus(seat);
	} else if (surface != psurface) {
		kb = wlr_seat_get_keyboard(seat);
		wlr_seat_keyboard_notify_enter(seat, surface,
				kb->keycodes, kb->num_keycodes, &kb->modifiers);


@@ 897,11 899,17 @@ pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy,
		wlr_seat_pointer_notify_motion(seat, time, sx, sy);
		return;
	}

	/* If surface is NULL, clear pointer focus, otherwise let the client
	 * know that the mouse cursor has entered one of its surfaces. */
	if (!surface) {
		wlr_seat_pointer_notify_clear_focus(seat);
		return;
	}

	wlr_seat_pointer_notify_enter(seat, surface, sx, sy);
	/* If keyboard focus follows mouse, enforce that */
	if (sloppyfocus && surface)
	if (sloppyfocus)
		focusclient(c, surface, 0);
}


Do not follow this link