|
|
@ -173,8 +173,9 @@ killclient(const char *arg) { |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
manage(Window w, XWindowAttributes *wa) { |
|
|
|
manage(Window w, XWindowAttributes *wa) { |
|
|
|
Client *c, *t; |
|
|
|
Client *c, *t = NULL; |
|
|
|
Window trans; |
|
|
|
Window trans; |
|
|
|
|
|
|
|
Status rettrans; |
|
|
|
XWindowChanges wc; |
|
|
|
XWindowChanges wc; |
|
|
|
|
|
|
|
|
|
|
|
c = emallocz(sizeof(Client)); |
|
|
|
c = emallocz(sizeof(Client)); |
|
|
@ -203,17 +204,17 @@ manage(Window w, XWindowAttributes *wa) { |
|
|
|
updatesizehints(c); |
|
|
|
updatesizehints(c); |
|
|
|
XSelectInput(dpy, w, |
|
|
|
XSelectInput(dpy, w, |
|
|
|
StructureNotifyMask | PropertyChangeMask | EnterWindowMask); |
|
|
|
StructureNotifyMask | PropertyChangeMask | EnterWindowMask); |
|
|
|
XGetTransientForHint(dpy, w, &trans); |
|
|
|
|
|
|
|
grabbuttons(c, False); |
|
|
|
grabbuttons(c, False); |
|
|
|
wc.border_width = c->border; |
|
|
|
wc.border_width = c->border; |
|
|
|
XConfigureWindow(dpy, w, CWBorderWidth, &wc); |
|
|
|
XConfigureWindow(dpy, w, CWBorderWidth, &wc); |
|
|
|
XSetWindowBorder(dpy, w, dc.norm[ColBorder]); |
|
|
|
XSetWindowBorder(dpy, w, dc.norm[ColBorder]); |
|
|
|
configure(c); /* propagates border_width, if size doesn't change */ |
|
|
|
configure(c); /* propagates border_width, if size doesn't change */ |
|
|
|
updatetitle(c); |
|
|
|
updatetitle(c); |
|
|
|
for(t = clients; t && t->win != trans; t = t->next); |
|
|
|
if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success)) |
|
|
|
|
|
|
|
for(t = clients; t && t->win != trans; t = t->next); |
|
|
|
settags(c, t); |
|
|
|
settags(c, t); |
|
|
|
if(!c->isfloating) |
|
|
|
if(!c->isfloating) |
|
|
|
c->isfloating = (t != NULL) || c->isfixed; |
|
|
|
c->isfloating = (rettrans == Success) || c->isfixed; |
|
|
|
attach(c); |
|
|
|
attach(c); |
|
|
|
attachstack(c); |
|
|
|
attachstack(c); |
|
|
|
c->isbanned = True; |
|
|
|
c->isbanned = True; |
|
|
|