summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeonardo Hernández Hernández <leohdz172@proton.me>2023-07-08 20:08:45 -0600
committerLeonardo Hernández Hernández <leohdz172@proton.me>2023-11-14 19:44:43 -0600
commite1f3983bf8a548f0357a92d9023c90aa4c273f64 (patch)
treebe4f8fd93ac5a5f30013bc7cda1bd088652749ab
parent31bf1cbaf6418a6fb39e41b21cadc5c20826a663 (diff)
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
-rw-r--r--client.h22
-rw-r--r--dwl.c3
2 files changed, 25 insertions, 0 deletions
diff --git a/client.h b/client.h
index 6a870b4..012ba74 100644
--- a/client.h
+++ b/client.h
@@ -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
diff --git a/dwl.c b/dwl.c
index b379305..00d22e8 100644
--- a/dwl.c
+++ b/dwl.c
@@ -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