diff --git a/client.c b/client.c index 44fa7452..560738c7 100644 --- a/client.c +++ b/client.c @@ -190,6 +190,7 @@ ban(Client * c) XUnmapWindow(c->display, c->win); setclientstate(c, IconicState); c->isbanned = True; + c->unmapped++; } /** Configure client diff --git a/client.h b/client.h index e4182b90..edc4d42b 100644 --- a/client.h +++ b/client.h @@ -16,6 +16,7 @@ struct Client int rx, ry, rw, rh; /* revert geometry */ int basew, baseh, incw, inch, maxw, maxh, minw, minh; int minax, maxax, minay, maxay; + int unmapped; long flags; int border, oldborder; Bool isbanned, isfixed, ismax, isfloating, wasfloating; diff --git a/event.c b/event.c index 9173295a..05d85f82 100644 --- a/event.c +++ b/event.c @@ -360,7 +360,7 @@ handle_event_unmapnotify(XEvent * e, awesome_config *awesomeconf) Client *c; XUnmapEvent *ev = &e->xunmap; - if((c = getclient(ev->window)) && ev->event == DefaultRootWindow(e->xany.display) && (ev->send_event || !c->isbanned)) + if((c = getclient(ev->window)) && ev->event == DefaultRootWindow(e->xany.display) && (ev->send_event || !c->unmapped--)) unmanage(c, &dc, WithdrawnState, awesomeconf); }