~ruther/dwl

d738573e22649dfb01f70eca00cef221839c9efb — Leonardo Hernández Hernández 2 years ago b9295e8
new function to notify keyboard enter
2 files changed, 12 insertions(+), 13 deletions(-)

M client.h
M dwl.c
M client.h => client.h +10 -0
@@ 199,6 199,16 @@ client_is_unmanaged(Client *c)
}

static inline void
client_notify_enter(struct wlr_surface *s, struct wlr_keyboard *kb)
{
	if (kb)
		wlr_seat_keyboard_notify_enter(seat, s, kb->keycodes,
				kb->num_keycodes, &kb->modifiers);
	else
		wlr_seat_keyboard_notify_enter(seat, s, NULL, 0, NULL);
}

static inline void
client_restack_surface(Client *c)
{
#ifdef XWAYLAND

M dwl.c => dwl.c +2 -13
@@ 590,7 590,6 @@ arrangelayers(Monitor *m)
		ZWLR_LAYER_SHELL_V1_LAYER_TOP,
	};
	LayerSurface *layersurface;
	struct wlr_keyboard *kb = wlr_seat_get_keyboard(seat);

	/* Arrange exclusive surfaces from top->bottom */
	for (i = 3; i >= 0; i--)


@@ 614,11 613,7 @@ arrangelayers(Monitor *m)
				/* Deactivate the focused client. */
				focusclient(NULL, 0);
				exclusive_focus = layersurface->layer_surface->surface;
				if (kb)
					wlr_seat_keyboard_notify_enter(seat, exclusive_focus,
							kb->keycodes, kb->num_keycodes, &kb->modifiers);
				else
					wlr_seat_keyboard_notify_enter(seat, exclusive_focus, NULL, 0, NULL);
				client_notify_enter(exclusive_focus, wlr_seat_get_keyboard(seat));
				return;
			}
		}


@@ 1117,7 1112,6 @@ void
focusclient(Client *c, int lift)
{
	struct wlr_surface *old = seat->keyboard_state.focused_surface;
	struct wlr_keyboard *kb;
	int i;
	/* Do not focus clients if a layer surface is focused */
	if (exclusive_focus)


@@ 1178,12 1172,7 @@ focusclient(Client *c, int lift)
	}

	/* Have a client, so focus its top-level wlr_surface */
	kb = wlr_seat_get_keyboard(seat);
	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);
	client_notify_enter(client_surface(c), wlr_seat_get_keyboard(seat));

	/* Activate the new client */
	client_activate_surface(client_surface(c), 1);

Do not follow this link