c->bw = *c->w + 2;
c->bx = *c->x + *c->w - c->bw + 2;
c->by = *c->y;
- XMoveResizeWindow(dpy, c->title, c->bx, c->by, c->bw, c->bh);
+ if(c->tags[tsel])
+ XMoveResizeWindow(dpy, c->title, c->bx, c->by, c->bw, c->bh);
+ else
+ XMoveResizeWindow(dpy, c->title, c->bx + 2 * sw, c->by, c->bw, c->bh);
+
}
static int
void
manage(Window w, XWindowAttributes *wa)
{
+ int diff;
Client *c;
XSetWindowAttributes twa;
Window trans;
c->win = w;
c->bx = c->fx = c->tx = wa->x;
c->by = c->fy = c->ty = wa->y;
- if(c->fy < bh)
- c->by = c->fy = c->ty += bh;
c->bw = c->fw = c->tw = wa->width;
c->fh = c->th = wa->height;
c->bh = bh;
+
+ diff = sw - c->fw;
+ c->fx = random() % (diff ? diff : 1);
+ diff = sh - c->fh - bh;
+ c->fy = random() % (diff ? diff : 1);
+
+ if(c->fy < bh)
+ c->by = c->fy = c->ty = bh;
+
c->border = 1;
c->proto = getproto(c->win);
setsize(c);
focus(c);
}
else {
- ban(c);
XMapRaised(dpy, c->win);
XMapRaised(dpy, c->title);
- XSync(dpy, False);
}
}
*sel->w = sw - 2 * sel->border;
*sel->h = sh - 2 * sel->border - bh;
higher(sel);
- resize(sel, False);
+ resize(sel, False, TopLeft);
}
void
}
void
-resize(Client *c, Bool inc)
+resize(Client *c, Bool inc, Corner sticky)
{
XConfigureEvent e;
+ int right = *c->x + *c->w;
+ int bottom = *c->y + *c->h;
if(inc) {
if(c->incw)
*c->w = c->maxw;
if(c->maxh && *c->h > c->maxh)
*c->h = c->maxh;
+ if(sticky == TopRight || sticky == BotRight)
+ *c->x = right - *c->w;
+ if(sticky == BotLeft || sticky == BotRight)
+ *c->y = bottom - *c->h;
+
resizetitle(c);
XSetWindowBorderWidth(dpy, c->win, 1);
XMoveResizeWindow(dpy, c->win, *c->x, *c->y, *c->w, *c->h);
+
e.type = ConfigureNotify;
e.event = c->win;
e.window = c->win;