|
|
@@ -185,9 +185,11 @@ manage(Window w, XWindowAttributes *wa) {
|
|
|
c->y = wa->y;
|
|
|
c->w = wa->width;
|
|
|
c->h = wa->height;
|
|
|
+ c->oldborder = wa->border_width;
|
|
|
if(c->w == sw && c->h == sh) {
|
|
|
c->x = sx;
|
|
|
c->y = sy;
|
|
|
+ c->border = wa->border_width;
|
|
|
}
|
|
|
else {
|
|
|
if(c->x + c->w + 2 * c->border > wax + waw)
|
|
|
@@ -198,15 +200,16 @@ manage(Window w, XWindowAttributes *wa) {
|
|
|
c->x = wax;
|
|
|
if(c->y < way)
|
|
|
c->y = way;
|
|
|
+ c->border = BORDERPX;
|
|
|
}
|
|
|
+ wc.border_width = c->border;
|
|
|
+ XConfigureWindow(dpy, w, CWBorderWidth, &wc);
|
|
|
+ XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
|
|
|
+ configure(c); /* propagates border_width, if size doesn't change */
|
|
|
updatesizehints(c);
|
|
|
XSelectInput(dpy, w,
|
|
|
StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
|
|
|
grabbuttons(c, False);
|
|
|
- c->border = wc.border_width = (c->w == sw && c->h == sh) ? wa->border_width : BORDERPX;
|
|
|
- XConfigureWindow(dpy, w, CWBorderWidth, &wc);
|
|
|
- XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
|
|
|
- configure(c); /* propagates border_width, if size doesn't change */
|
|
|
updatetitle(c);
|
|
|
if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success))
|
|
|
for(t = clients; t && t->win != trans; t = t->next);
|
|
|
@@ -378,10 +381,13 @@ updatetitle(Client *c) {
|
|
|
void
|
|
|
unmanage(Client *c) {
|
|
|
Client *nc;
|
|
|
+ XWindowChanges wc;
|
|
|
|
|
|
+ wc.border_width = c->oldborder;
|
|
|
/* The server grab construct avoids race conditions. */
|
|
|
XGrabServer(dpy);
|
|
|
XSetErrorHandler(xerrordummy);
|
|
|
+ XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
|
|
|
detach(c);
|
|
|
detachstack(c);
|
|
|
if(sel == c) {
|