diff --git a/dwm.c b/dwm.c index 67c6b2b..59666f7 100644 --- a/dwm.c +++ b/dwm.c @@ -808,6 +808,8 @@ focus(Client *c) XDeleteProperty(dpy, root, netatom[NetActiveWindow]); } selmon->sel = c; + if (selmon->lt[selmon->sellt]->arrange == monocle) + arrangemon(selmon); drawbars(); } @@ -1121,8 +1123,15 @@ monocle(Monitor *m) n++; if (n > 0) /* override layout symbol */ snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n); - for (c = nexttiled(m->clients); c; c = nexttiled(c->next)) - resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0); + for (c = m->stack; c && (!ISVISIBLE(c) || c->isfloating); c = c->snext); + if (c && !c->isfloating) { + XMoveWindow(dpy, c->win, m->wx, m->wy); + resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0); + c = c->snext; + } + for (; c; c = c->snext) + if (!c->isfloating && ISVISIBLE(c)) + XMoveWindow(dpy, c->win, WIDTH(c) * -2, c->y); } void