X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=client.c;h=3505e76619eb698cd33d439d6310d98725e56113;hb=8a5f002c4182abf6dcaac354a3da04cc18830ad9;hp=b9c519bf3037ec7b9a31aa8c15a55173258ee709;hpb=71857b87ee4e5ce63594d062143e6ea78f842b0d;p=dwm.git diff --git a/client.c b/client.c index b9c519b..3505e76 100644 --- a/client.c +++ b/client.c @@ -67,6 +67,14 @@ xerrordummy(Display *dsply, XErrorEvent *ee) { /* extern */ +void +ban(Client *c) { + if(!c || c->isbanned) + return; + c->isbanned = True; + XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +} + void configure(Client *c) { XConfigureEvent ce; @@ -148,7 +156,7 @@ killclient(Arg *arg) { void manage(Window w, XWindowAttributes *wa) { - Client *c; + Client *c, *t; Window trans; c = emallocz(sizeof(Client)); @@ -181,15 +189,16 @@ manage(Window w, XWindowAttributes *wa) { grabbuttons(c, False); XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]); updatetitle(c); - settags(c, getclient(trans)); + t = getclient(trans); + settags(c, t); if(!c->isfloat) - c->isfloat = trans || c->isfixed; + c->isfloat = (t != 0) || c->isfixed; if(clients) clients->prev = c; c->next = clients; c->snext = stack; stack = clients = c; - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); + ban(c); XMapWindow(dpy, c->win); setclientstate(c, NormalState); if(isvisible(c)) @@ -303,8 +312,8 @@ updatesizehints(Client *c) { } else c->minax = c->minay = c->maxax = c->maxay = 0; - c->isfixed = (c->maxw && c->minw && c->maxh && c->minh && - c->maxw == c->minw && c->maxh == c->minh); + c->isfixed = (c->maxw && c->minw && c->maxh && c->minh + && c->maxw == c->minw && c->maxh == c->minh); } void @@ -324,7 +333,7 @@ updatetitle(Client *c) { strncpy(c->name, (char *)name.value, sizeof c->name); else { if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success - && n > 0 && *list) + && n > 0 && *list) { strncpy(c->name, *list, sizeof c->name); XFreeStringList(list);