dwm-noborder-6.1.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-noborder-6.1.diff (2347B)
---
1 diff --git a/dwm.c b/dwm.c
2 index 0362114..e3209e5 100644
3 --- a/dwm.c
4 +++ b/dwm.c
5 @@ -393,9 +393,24 @@ arrange(Monitor *m)
6 void
7 arrangemon(Monitor *m)
8 {
9 + int n = 0;
10 + Client *c;
11 strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
12 - if (m->lt[m->sellt]->arrange)
13 - m->lt[m->sellt]->arrange(m);
14 + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
15 + if ((m->lt[m->sellt]->arrange != monocle && n > 1) || !m->lt[m->sellt]->arrange) {
16 + for (c = m->clients; c; c = c->next) {
17 + if (ISVISIBLE(c) && (!m->lt[m->sellt]->arrange || !c->isfloating) && (c->bw != borderpx)) {
18 + c->oldbw = c->bw;
19 + c->bw = borderpx;
20 + resizeclient(c, m->wx, m->wy, m->ww - (2 * c->bw), m->wh - (2 * c->bw));
21 + }
22 + }
23 + if (m->lt[m->sellt]->arrange) {
24 + m->lt[m->sellt]->arrange(m);
25 + }
26 + } else {
27 + monocle(m);
28 + }
29 }
30
31 void
32 @@ -1123,10 +1138,19 @@ monocle(Monitor *m)
33 for (c = m->clients; c; c = c->next)
34 if (ISVISIBLE(c))
35 n++;
36 - if (n > 0) /* override layout symbol */
37 + if (n > 0 && m->lt[m->sellt]->arrange == monocle) /* override layout symbol */
38 snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n);
39 - for (c = nexttiled(m->clients); c; c = nexttiled(c->next))
40 - resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0);
41 + for(c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
42 + // I'm not sure, but calling resize with the border width subtractions
43 + // fixes a glitch where windows would not redraw until they were
44 + // manually resized after restarting dwm.
45 + resize(c, m->wx, m->wy, m->ww - (2 * c->bw), m->wh - (2 * c->bw), False);
46 + if (c->bw) {
47 + c->oldbw = c->bw;
48 + c->bw = 0;
49 + resizeclient(c, m->wx, m->wy, m->ww, m->wh);
50 + }
51 + }
52 }
53
54 void
55 @@ -1706,9 +1730,14 @@ togglefloating(const Arg *arg)
56 if (selmon->sel->isfullscreen) /* no support for fullscreen windows */
57 return;
58 selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
59 - if (selmon->sel->isfloating)
60 + if (selmon->sel->isfloating) {
61 + if (selmon->sel->bw != borderpx) {
62 + selmon->sel->oldbw = selmon->sel->bw;
63 + selmon->sel->bw = borderpx;
64 + }
65 resize(selmon->sel, selmon->sel->x, selmon->sel->y,
66 - selmon->sel->w, selmon->sel->h, 0);
67 + selmon->sel->w - selmon->sel->bw * 2, selmon->sel->h - selmon->sel->bw * 2, 0);
68 + }
69 arrange(selmon);
70 }
71