Keep windows fullscreen after redraw

This fixes the bug that happens when changing workspace (or any time
arrange() is called) where there are fullscreen windows, which are still
fullscreen but leave the space for layer surfaces like waybar (which
should be hidden when going fullscreen)

Also as soon one fullscreen window is found hte function returns to
improve efficiency
This commit is contained in:
Stivvo 2020-10-08 21:04:53 +02:00 committed by Guido Cella
parent 02a09cb854
commit 5a16649e79

8
dwl.c
View file

@ -1405,6 +1405,10 @@ monocle(Monitor *m)
wl_list_for_each(c, &clients, link) { wl_list_for_each(c, &clients, link) {
if (!VISIBLEON(c, m) || c->isfloating) if (!VISIBLEON(c, m) || c->isfloating)
continue; continue;
if (c->isfullscreen) {
resize(c, c->mon->m.x, c->mon->m.y, c->mon->m.width, c->mon->m.height, 0);
return;
}
resize(c, m->w.x, m->w.y, m->w.width, m->w.height, 0); resize(c, m->w.x, m->w.y, m->w.width, m->w.height, 0);
} }
} }
@ -2254,6 +2258,10 @@ tile(Monitor *m)
wl_list_for_each(c, &clients, link) { wl_list_for_each(c, &clients, link) {
if (!VISIBLEON(c, m) || c->isfloating) if (!VISIBLEON(c, m) || c->isfloating)
continue; continue;
if (c->isfullscreen) {
resize(c, c->mon->m.x, c->mon->m.y, c->mon->m.width, c->mon->m.height, 0);
return;
}
if (i < m->nmaster) { if (i < m->nmaster) {
h = (m->w.height - my) / (MIN(n, m->nmaster) - i); h = (m->w.height - my) / (MIN(n, m->nmaster) - i);
resize(c, m->w.x, m->w.y + my, mw, h, 0); resize(c, m->w.x, m->w.y + my, mw, h, 0);