layout_bstack.c (1810B)
1 static void 2 bstack(Monitor *m) 3 { 4 unsigned int i, n; 5 int mx = 0, my = 0, mh = 0, mw = 0; 6 int sx = 0, sy = 0, sh = 0, sw = 0; 7 float mfacts, sfacts; 8 int mrest, srest; 9 Client *c; 10 11 #if VANITYGAPS_PATCH 12 int oh, ov, ih, iv; 13 getgaps(m, &oh, &ov, &ih, &iv, &n); 14 #else 15 for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); 16 #endif // VANITYGAPS_PATCH 17 18 if (n == 0) 19 return; 20 21 #if VANITYGAPS_PATCH 22 sx = mx = m->wx + ov; 23 sy = my = m->wy + oh; 24 sh = mh = m->wh - 2*oh; 25 mw = m->ww - 2*ov - iv * (MIN(n, m->nmaster) - 1); 26 sw = m->ww - 2*ov - iv * (n - m->nmaster - 1); 27 28 if (m->nmaster && n > m->nmaster) { 29 sh = (mh - ih) * (1 - m->mfact); 30 mh = (mh - ih) * m->mfact; 31 sx = mx; 32 sy = my + mh + ih; 33 } 34 #else 35 sx = mx = m->wx; 36 sy = my = m->wy; 37 sh = mh = m->wh; 38 sw = mw = m->ww; 39 40 if (m->nmaster && n > m->nmaster) { 41 sh = mh * (1 - m->mfact); 42 mh = mh * m->mfact; 43 sy = my + mh; 44 } 45 #endif // VANITYGAPS_PATCH 46 47 getfacts(m, mw, sw, &mfacts, &sfacts, &mrest, &srest); 48 49 for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) { 50 if (i < m->nmaster) { 51 #if CFACTS_PATCH 52 resize(c, mx, my, (mw / mfacts) * c->cfact + (i < mrest ? 1 : 0) - (2*c->bw), mh - (2*c->bw), 0); 53 #else 54 resize(c, mx, my, (mw / mfacts) + (i < mrest ? 1 : 0) - (2*c->bw), mh - (2*c->bw), 0); 55 #endif // CFACTS_PATCH 56 #if VANITYGAPS_PATCH 57 mx += WIDTH(c) + iv; 58 #else 59 mx += WIDTH(c); 60 #endif 61 } else { 62 #if CFACTS_PATCH 63 resize(c, sx, sy, (sw / sfacts) * c->cfact + ((i - m->nmaster) < srest ? 1 : 0) - (2*c->bw), sh - (2*c->bw), 0); 64 #else 65 resize(c, sx, sy, (sw / sfacts) + ((i - m->nmaster) < srest ? 1 : 0) - (2*c->bw), sh - (2*c->bw), 0); 66 #endif // CFACTS_PATCH 67 #if VANITYGAPS_PATCH 68 sx += WIDTH(c) + iv; 69 #else 70 sx += WIDTH(c); 71 #endif 72 } 73 } 74 } 75