*/
#include <errno.h>
#include <locale.h>
-#include <regex.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/select.h>
+#include <sys/types.h>
#include <sys/wait.h>
+#include <regex.h>
#include <X11/cursorfont.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
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);
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++;
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;
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
}
resize(c, nx, ny, nw, nh, RESIZEHINTS);
if(n > 1 && th != wah)
- ny += nh + 2 * c->border;
+ ny = c->y + c->h + c->border;
}
}