X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=dwm.c;h=5aa71b7cdd155aec6fe0784f3a8ba1afbfa7e720;hb=bedbe59aaac1651643e9084fd5cdeb0883ea40e4;hp=ca57f8e8b9e40c638c03c3b780bc663e75677b0a;hpb=8d1810c85befb0e7ec406e64c07825b7d24c66fc;p=dwm.git diff --git a/dwm.c b/dwm.c index ca57f8e..5aa71b7 100644 --- a/dwm.c +++ b/dwm.c @@ -27,14 +27,15 @@ */ #include #include -#include #include #include #include #include #include #include +#include #include +#include #include #include #include @@ -645,8 +646,10 @@ enternotify(XEvent *e) { if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) return; - if((c = getclient(ev->window))) + if((c = getclient(ev->window))) { focus(c); + restack(); + } else if(ev->window == root) { selscreen = True; focus(NULL); @@ -1568,7 +1571,7 @@ textw(const char *text) { void tile(void) { unsigned int i, n, nx, ny, nw, nh, mw, th; - Client *c; + Client *c, *mc; for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) n++; @@ -1581,7 +1584,8 @@ tile(void) { nx = wax; ny = way; - for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) { + nw = 0; /* gcc stupidity requires this */ + for(i = 0, c = mc = nexttiled(clients); c; c = nexttiled(c->next), i++) { c->ismax = False; if(i == 0) { /* master */ nw = mw - 2 * c->border; @@ -1590,9 +1594,9 @@ tile(void) { else { /* tile window */ if(i == 1) { ny = way; - nx += mw; + nx += mc->w + mc->border; + nw = waw - nx - 2 * c->border; } - nw = waw - mw - 2 * c->border; if(i + 1 == n) /* remainder */ nh = (way + wah) - ny - 2 * c->border; else @@ -1600,7 +1604,7 @@ tile(void) { } resize(c, nx, ny, nw, nh, RESIZEHINTS); if(n > 1 && th != wah) - ny += nh + 2 * c->border; + ny = c->y + c->h + c->border; } }