layout_columns.c (1821B)
1 static void 2 col(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 mh = m->wh - 2*oh; 25 sh = m->wh - 2*oh - ih * (n - m->nmaster - 1); 26 mw = m->ww - 2*ov - iv * (MIN(n, m->nmaster) - 1); 27 sw = m->ww - 2*ov; 28 29 if (m->nmaster && n > m->nmaster) { 30 sw = (mw - iv) * (1 - m->mfact); 31 mw = (mw - iv) * m->mfact; 32 sx = mx + mw + iv * m->nmaster; 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 sw = mw * (1 - m->mfact); 42 mw = mw * m->mfact; 43 sx = mx + mw; 44 } 45 #endif // VANITYGAPS_PATCH 46 47 getfacts(m, mw, sh, &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 - (2*c->bw), (sh / sfacts) * c->cfact + ((i - m->nmaster) < srest ? 1 : 0) - (2*c->bw), 0); 64 #else 65 resize(c, sx, sy, sw - (2*c->bw), (sh / sfacts) + ((i - m->nmaster) < srest ? 1 : 0) - (2*c->bw), 0); 66 #endif // CFACTS_PATCH 67 #if VANITYGAPS_PATCH 68 sy += HEIGHT(c) + ih; 69 #else 70 sy += HEIGHT(c); 71 #endif 72 } 73 } 74