commit eb6f1fcc81953d10fe57f8bcd729d369287138b7
parent d50d01ff686fc9ae7bf919757244edbef212e944
Author: Jake Koroman <jakekoroman@gmail.com>
Date: Sun, 4 Aug 2024 21:35:38 -0400
patches from upstream
Diffstat:
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/dwl/dwl.c b/dwl/dwl.c
@@ -483,9 +483,9 @@ applybounds(Client *c, struct wlr_box *bbox)
c->geom.x = bbox->x + bbox->width - c->geom.width;
if (c->geom.y >= bbox->y + bbox->height)
c->geom.y = bbox->y + bbox->height - c->geom.height;
- if (c->geom.x + c->geom.width + 2 * (int)c->bw <= bbox->x)
+ if (c->geom.x + c->geom.width <= bbox->x)
c->geom.x = bbox->x;
- if (c->geom.y + c->geom.height + 2 * (int)c->bw <= bbox->y)
+ if (c->geom.y + c->geom.height <= bbox->y)
c->geom.y = bbox->y;
}
@@ -565,6 +565,20 @@ arrange(Monitor *m)
strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, LENGTH(m->ltsymbol));
+ /* We move all clients (except fullscreen and unmanaged) to LyrTile while
+ * in floating layout to avoid "real" floating clients be always on top */
+ wl_list_for_each(c, &clients, link) {
+ if (c->mon != m || c->scene->node.parent == layers[LyrFS])
+ continue;
+
+ wlr_scene_node_reparent(&c->scene->node,
+ (!m->lt[m->sellt]->arrange && c->isfloating)
+ ? layers[LyrTile]
+ : (m->lt[m->sellt]->arrange && c->isfloating)
+ ? layers[LyrFloat]
+ : c->scene->node.parent);
+ }
+
if (m->lt[m->sellt]->arrange)
m->lt[m->sellt]->arrange(m);
motionnotify(0, NULL, 0, 0, 0, 0);