~ruther/dwl

13925eb1da8af2c1d23ee9d01efd03c3626081b2 — Leonardo Hernández Hernández 9 months ago 4a7d1be
correctly report position to xwayland clients

Previously we didn't take into account their borders requiring us to add
`borderpx` to override_redirect clients.

Fixes: https://codeberg.org/dwl/dwl/issues/651
2 files changed, 3 insertions(+), 4 deletions(-)

M client.h
M dwl.c
M client.h => client.h +1 -1
@@ 350,7 350,7 @@ client_set_size(Client *c, uint32_t width, uint32_t height)
#ifdef XWAYLAND
	if (client_is_x11(c)) {
		wlr_xwayland_surface_configure(c->surface.xwayland,
				c->geom.x, c->geom.y, width, height);
				c->geom.x + c->bw, c->geom.y + c->bw, width, height);
		return 0;
	}
#endif

M dwl.c => dwl.c +2 -3
@@ 1651,8 1651,7 @@ mapnotify(struct wl_listener *listener, void *data)
	if (client_is_unmanaged(c)) {
		/* Unmanaged clients always are floating */
		wlr_scene_node_reparent(&c->scene->node, layers[LyrFloat]);
		wlr_scene_node_set_position(&c->scene->node, c->geom.x + borderpx,
				c->geom.y + borderpx);
		wlr_scene_node_set_position(&c->scene->node, c->geom.x, c->geom.y);
		if (client_wants_focus(c)) {
			focusclient(c, 1);
			exclusive_focus = c;


@@ 3038,7 3037,7 @@ createnotifyx11(struct wl_listener *listener, void *data)
	c = xsurface->data = ecalloc(1, sizeof(*c));
	c->surface.xwayland = xsurface;
	c->type = X11;
	c->bw = borderpx;
	c->bw = client_is_unmanaged(c) ? 0 : borderpx;

	/* Listen to the various events it can emit */
	LISTEN(&xsurface->events.associate, &c->associate, associatex11);

Do not follow this link