fix a bug in controlled fullscreen patch in which the window app would spawn ummapped at the floating layout

This commit is contained in:
André Desgualdo Pereira
2025-11-13 09:20:00 -03:00
parent e104ef3495
commit 973df560ec
3 changed files with 152 additions and 19 deletions
@@ -1,14 +1,14 @@
From 33e9b8a227b63e344407c1e4d137b574483cbd1e Mon Sep 17 00:00:00 2001
From e0cecc228d436425c0d921a1eec5e0370d24613d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Desgualdo=20Pereira?= <desgua@gmail.com>
Date: Wed, 8 Oct 2025 17:38:00 -0300
Subject: [PATCH] controlled fullscreen
Date: Thu, 13 Nov 2025 09:09:22 -0300
Subject: [PATCH] controlled fullscreen fix
---
dwl.c | 33 ++++++++++++---------------------
1 file changed, 12 insertions(+), 21 deletions(-)
dwl.c | 32 ++++++++++++--------------------
1 file changed, 12 insertions(+), 20 deletions(-)
diff --git a/dwl.c b/dwl.c
index 12f441e..c74380d 100644
index 12f441e..4f124eb 100644
--- a/dwl.c
+++ b/dwl.c
@@ -518,9 +518,6 @@ arrange(Monitor *m)
@@ -90,15 +90,7 @@ index 12f441e..c74380d 100644
} else {
/* restore previous size instead of arrange for floating windows since
* client positions are set by the user and cannot be recalculated */
@@ -2413,7 +2408,6 @@ setmon(Client *c, Monitor *m, uint32_t newtags)
/* Make sure window actually overlaps with the monitor */
resize(c, c->geom, 0);
c->tags = newtags ? newtags : m->tagset[m->seltags]; /* assign tags of target monitor */
- setfullscreen(c, c->isfullscreen); /* This will call arrange(c->mon) */
setfloating(c, c->isfloating);
}
focusclient(focustop(selmon), 1);
@@ -2716,7 +2710,7 @@ tile(Monitor *m)
@@ -2716,7 +2711,7 @@ tile(Monitor *m)
Client *c;
wl_list_for_each(c, &clients, link)
@@ -107,7 +99,7 @@ index 12f441e..c74380d 100644
n++;
if (n == 0)
return;
@@ -2727,7 +2721,7 @@ tile(Monitor *m)
@@ -2727,7 +2722,7 @@ tile(Monitor *m)
mw = m->w.width;
i = my = ty = 0;
wl_list_for_each(c, &clients, link) {
@@ -116,7 +108,7 @@ index 12f441e..c74380d 100644
continue;
if (i < m->nmaster) {
resize(c, (struct wlr_box){.x = m->w.x, .y = m->w.y + my, .width = mw,
@@ -2747,7 +2741,7 @@ togglefloating(const Arg *arg)
@@ -2747,7 +2742,7 @@ togglefloating(const Arg *arg)
{
Client *sel = focustop(selmon);
/* return if fullscreen */
@@ -125,7 +117,7 @@ index 12f441e..c74380d 100644
setfloating(sel, !sel->isfloating);
}
@@ -2902,9 +2896,6 @@ updatemons(struct wl_listener *listener, void *data)
@@ -2902,9 +2897,6 @@ updatemons(struct wl_listener *listener, void *data)
arrangelayers(m);
/* Don't move clients to the left output when plugging monitors */
arrange(m);