~ruther/dwl

e1f3983bf8a548f0357a92d9023c90aa4c273f64 — Leonardo Hernández Hernández 1 year, 9 months ago 31bf1cb
use wlr_scene_subsurface_tree_set_clip

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4131
Closes: https://github.com/djpohly/dwl/issues/411
2 files changed, 25 insertions(+), 0 deletions(-)

M client.h
M dwl.c
M client.h => client.h +22 -0
@@ 141,6 141,28 @@ client_get_appid(Client *c)
}

static inline void
client_get_clip(Client *c, struct wlr_box *clip)
{
#ifdef XWAYLAND
	if (client_is_x11(c)) {
		*clip = (struct wlr_box){
			.x = 0,
			.y = 0,
			.width = c->geom.width - c->bw,
			.height = c->geom.height - c->bw};
		return;
	}
#endif

	*clip = (struct wlr_box){
		.x = c->surface.xdg->pending.geometry.x,
		.y = c->surface.xdg->pending.geometry.y,
		.width = c->geom.width - c->bw,
		.height = c->geom.height - c->bw};

}

static inline void
client_get_geometry(Client *c, struct wlr_box *geom)
{
#ifdef XWAYLAND

M dwl.c => dwl.c +3 -0
@@ 1909,6 1909,7 @@ void
resize(Client *c, struct wlr_box geo, int interact)
{
	struct wlr_box *bbox = interact ? &sgeom : &c->mon->w;
	struct wlr_box clip;
	client_set_bounds(c, geo.width, geo.height);
	c->geom = geo;
	applybounds(c, bbox);


@@ 1927,6 1928,8 @@ resize(Client *c, struct wlr_box geo, int interact)
	/* this is a no-op if size hasn't changed */
	c->resize = client_set_size(c, c->geom.width - 2 * c->bw,
			c->geom.height - 2 * c->bw);
	client_get_clip(c, &clip);
	wlr_scene_subsurface_tree_set_clip(&c->scene_surface->node, &clip);
}

void

Do not follow this link