sites

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit d290698610f92eb72360482ac130002c09c13068
parent c47f6a5bd28ce44f3783ab39ee123572b2496f03
Author: Unia <jthidskes@live.nl>
Date:   Wed, 27 Mar 2013 14:15:55 +0100

no more crash at >7 clients when resizing. now at >30

Diffstat:
Adwm.suckless.org/patches/xx-dwm-6.0-smfact.diff | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 96 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/xx-dwm-6.0-smfact.diff b/dwm.suckless.org/patches/xx-dwm-6.0-smfact.diff @@ -0,0 +1,96 @@ +--- dwm.c 2013-03-27 14:12:41.316782003 +0100 ++++ dwm.c 2013-03-27 14:12:49.040115216 +0100 +@@ -69,6 +69,7 @@ typedef union { + int i; + unsigned int ui; + float f; ++ float sf; + const void *v; + } Arg; + +@@ -127,6 +128,7 @@ typedef struct { + struct Monitor { + char ltsymbol[16]; + float mfact; ++ float smfact; + int nmaster; + int num; + int by; /* bar geometry */ +@@ -220,6 +222,7 @@ static void setfocus(Client *c); + static void setfullscreen(Client *c, Bool fullscreen); + static void setlayout(const Arg *arg); + static void setmfact(const Arg *arg); ++static void setsmfact(const Arg *arg); + static void setup(void); + static void showhide(Client *c); + static void sigchld(int unused); +@@ -1581,6 +1584,22 @@ setmfact(const Arg *arg) { + } + + void ++setsmfact(const Arg *arg) { ++ float sf; ++ int n = 0; ++ Client *c; ++ ++ if(!arg || !selmon->lt[selmon->sellt]->arrange) ++ return; ++ sf = arg->sf < 1.0 ? arg->sf + selmon->smfacts[selmon->curtag] : arg->sf - 1.0; ++ for(n = 0, c = nexttiled(selmon->clients); c; c = nexttiled(c->next), n++); ++ if(sf < 0 || ((n > 7) ? (sf > 0.50) : (sf > 0.95))) ++ return; ++ selmon->smfacts[selmon->curtag] = sf; ++ arrange(selmon); ++} ++ ++void + setup(void) { + XSetWindowAttributes wa; + +@@ -1703,7 +1722,7 @@ textnw(const char *text, unsigned int le + + void + tile(Monitor *m) { +- unsigned int i, n, h, mw, my, ty; ++ unsigned int i, n, h, smh, mw, my, ty; + Client *c; + + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); +@@ -1721,9 +1740,16 @@ tile(Monitor *m) { + my += HEIGHT(c); + } + else { +- h = (m->wh - ty) / (n - i); ++ smh = m->mh * m->smfacts[m->curtag]; ++ if(!(nexttiled(c->next))) ++ h = (m->wh - ty) / (n - i); ++ else ++ h = (m->wh - smh - ty) / (n - i); + resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), False); +- ty += HEIGHT(c); ++ if(!(nexttiled(c->next))) ++ ty += HEIGHT(c) + smh; ++ else ++ ty += HEIGHT(c); + } + } + +--- config.def.h 2013-03-27 14:13:01.230115003 +0100 ++++ config.def.h 2013-03-27 14:14:09.156780538 +0100 +@@ -24,6 +24,7 @@ static const Rule rules[] = { + + /* layout(s) */ + static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ ++static const float smfact = 0.00; /* factor of tiled clients [0.00..0.95] */ + static const int nmaster = 1; /* number of clients in master area */ + static const Bool resizehints = True; /* True means respect size hints in tiled resizals */ + +@@ -60,6 +61,8 @@ static Key keys[] = { + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, ++ { MODKEY|ShiftMask, XK_h, setsmfact, {.f = +0.05} }, ++ { MODKEY|ShiftMask, XK_l, setsmfact, {.f = -0.05} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} },