X-Git-Url: https://jasonwoof.com/gitweb/?p=dwm.git;a=blobdiff_plain;f=dwm.c;h=d274b50c75b8ffa0e877b9cea4aeb9c825b4a2aa;hp=db0fdfbbbe029a0564060ee45253588619f0ff9c;hb=f68a01cd767659190bf690e29986184348672647;hpb=0de4197cc5e8e81d94d0faffbaf46abab4d44d1a diff --git a/dwm.c b/dwm.c index db0fdfb..d274b50 100644 --- a/dwm.c +++ b/dwm.c @@ -289,31 +289,31 @@ applyrules(Client *c) { unsigned int i; const Rule *r; Monitor *m; - XClassHint ch = { 0 }; + XClassHint ch = { NULL, NULL }; /* rule matching */ c->isfloating = c->tags = 0; - if(XGetClassHint(dpy, c->win, &ch)) { - class = ch.res_class ? ch.res_class : broken; - instance = ch.res_name ? ch.res_name : broken; - for(i = 0; i < LENGTH(rules); i++) { - r = &rules[i]; - if((!r->title || strstr(c->name, r->title)) - && (!r->class || strstr(class, r->class)) - && (!r->instance || strstr(instance, r->instance))) - { - c->isfloating = r->isfloating; - c->tags |= r->tags; - for(m = mons; m && m->num != r->monitor; m = m->next); - if(m) - c->mon = m; - } + XGetClassHint(dpy, c->win, &ch); + class = ch.res_class ? ch.res_class : broken; + instance = ch.res_name ? ch.res_name : broken; + + for(i = 0; i < LENGTH(rules); i++) { + r = &rules[i]; + if((!r->title || strstr(c->name, r->title)) + && (!r->class || strstr(class, r->class)) + && (!r->instance || strstr(instance, r->instance))) + { + c->isfloating = r->isfloating; + c->tags |= r->tags; + for(m = mons; m && m->num != r->monitor; m = m->next); + if(m) + c->mon = m; } - if(ch.res_class) - XFree(ch.res_class); - if(ch.res_name) - XFree(ch.res_name); } + if(ch.res_class) + XFree(ch.res_class); + if(ch.res_name) + XFree(ch.res_name); c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags]; } @@ -349,7 +349,7 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact) { *h = bh; if(*w < bh) *w = bh; - if(resizehints || c->isfloating) { + if(resizehints || c->isfloating || !c->mon->lt[c->mon->sellt]->arrange) { /* see last two sentences in ICCCM 4.1.2.3 */ baseismin = c->basew == c->minw && c->baseh == c->minh; if(!baseismin) { /* temporarily remove base dimensions */ @@ -1597,7 +1597,7 @@ showhide(Client *c) { } else { /* hide clients bottom up */ showhide(c->snext); - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); + XMoveWindow(dpy, c->win, c->w * -2, c->y); } } @@ -1761,8 +1761,12 @@ unmapnotify(XEvent *e) { Client *c; XUnmapEvent *ev = &e->xunmap; - if((c = wintoclient(ev->window))) - unmanage(c, False); + if((c = wintoclient(ev->window))) { + if(ev->send_event) + setclientstate(c, WithdrawnState); + else + unmanage(c, False); + } } void