ifixed the layout symbol bug reported by Nibble (but using a different approach as he suggested) - optimised drawbar() and arrange() handling for multiple monitors, arrange only arranges the relevant monitors when applicable, same with drawbar - need to release 5.7.1 - dwm - dynamic window manager Err parazyd.org 70 hgit clone https://git.parazyd.org/dwm URL:https://git.parazyd.org/dwm parazyd.org 70 1Log /git/dwm/log.gph parazyd.org 70 1Files /git/dwm/files.gph parazyd.org 70 1Refs /git/dwm/refs.gph parazyd.org 70 1README /git/dwm/file/README.gph parazyd.org 70 1LICENSE /git/dwm/file/LICENSE.gph parazyd.org 70 i--- Err parazyd.org 70 1commit 9e8dd3479da9f484c9aa37adcd327989149e89ef /git/dwm/commit/9e8dd3479da9f484c9aa37adcd327989149e89ef.gph parazyd.org 70 1parent 0b72be924d3f0daa63e45a09951d6cb6cc9b335e /git/dwm/commit/0b72be924d3f0daa63e45a09951d6cb6cc9b335e.gph parazyd.org 70 hAuthor: Anselm R Garbe URL:mailto:anselm@garbe.us parazyd.org 70 iDate: Sun, 27 Sep 2009 10:31:14 +0100 Err parazyd.org 70 i Err parazyd.org 70 ifixed the layout symbol bug reported by Nibble (but using a different approach as he suggested) Err parazyd.org 70 i- optimised drawbar() and arrange() handling for multiple monitors, arrange only arranges the relevant monitors when applicable, same with drawbar Err parazyd.org 70 i- need to release 5.7.1 Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M config.mk | 2 +- Err parazyd.org 70 i M dwm.c | 66 ++++++++++++++++++------------- Err parazyd.org 70 i Err parazyd.org 70 i2 files changed, 39 insertions(+), 29 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/config.mk b/config.mk /git/dwm/file/config.mk.gph parazyd.org 70 i@@ -1,5 +1,5 @@ Err parazyd.org 70 i # dwm version Err parazyd.org 70 i-VERSION = 5.7 Err parazyd.org 70 i+VERSION = 5.7.1 Err parazyd.org 70 i Err parazyd.org 70 i # Customize below to fit your system Err parazyd.org 70 i Err parazyd.org 70 1diff --git a/dwm.c b/dwm.c /git/dwm/file/dwm.c.gph parazyd.org 70 i@@ -152,7 +152,8 @@ typedef struct { Err parazyd.org 70 i /* function declarations */ Err parazyd.org 70 i static void applyrules(Client *c); Err parazyd.org 70 i static Bool applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact); Err parazyd.org 70 i-static void arrange(void); Err parazyd.org 70 i+static void arrange(Monitor *m); Err parazyd.org 70 i+static void arrangemon(Monitor *m); Err parazyd.org 70 i static void attach(Client *c); Err parazyd.org 70 i static void attachstack(Client *c); Err parazyd.org 70 i static void buttonpress(XEvent *e); Err parazyd.org 70 i@@ -379,18 +380,24 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact) { Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i-arrange(void) { Err parazyd.org 70 i- Monitor *m; Err parazyd.org 70 i- Err parazyd.org 70 i- for(m = mons; m; m = m->next) Err parazyd.org 70 i+arrange(Monitor *m) { Err parazyd.org 70 i+ if(m) Err parazyd.org 70 i+ showhide(m->stack); Err parazyd.org 70 i+ else for(m = mons; m; m = m->next) Err parazyd.org 70 i showhide(m->stack); Err parazyd.org 70 i focus(NULL); Err parazyd.org 70 i- for(m = mons; m; m = m->next) { Err parazyd.org 70 i- strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol); Err parazyd.org 70 i- if(m->lt[m->sellt]->arrange) Err parazyd.org 70 i- m->lt[m->sellt]->arrange(m); Err parazyd.org 70 i- restack(m); Err parazyd.org 70 i- } Err parazyd.org 70 i+ if(m) Err parazyd.org 70 i+ arrangemon(m); Err parazyd.org 70 i+ else for(m = mons; m; m = m->next) Err parazyd.org 70 i+ arrangemon(m); Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+void Err parazyd.org 70 i+arrangemon(Monitor *m) { Err parazyd.org 70 i+ strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol); Err parazyd.org 70 i+ if(m->lt[m->sellt]->arrange) Err parazyd.org 70 i+ m->lt[m->sellt]->arrange(m); Err parazyd.org 70 i+ restack(m); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i@@ -546,7 +553,7 @@ configurenotify(XEvent *e) { Err parazyd.org 70 i updatebars(); Err parazyd.org 70 i for(m = mons; m; m = m->next) Err parazyd.org 70 i XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(NULL); Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 i@@ -1139,7 +1146,7 @@ manage(Window w, XWindowAttributes *wa) { Err parazyd.org 70 i XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */ Err parazyd.org 70 i XMapWindow(dpy, c->win); Err parazyd.org 70 i setclientstate(c, NormalState); Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(c->mon); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i@@ -1265,7 +1272,7 @@ propertynotify(XEvent *e) { Err parazyd.org 70 i case XA_WM_TRANSIENT_FOR: Err parazyd.org 70 i XGetTransientForHint(dpy, c->win, &trans); Err parazyd.org 70 i if(!c->isfloating && (c->isfloating = (wintoclient(trans) != NULL))) Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(c->mon); Err parazyd.org 70 i break; Err parazyd.org 70 i case XA_WM_NORMAL_HINTS: Err parazyd.org 70 i updatesizehints(c); Err parazyd.org 70 i@@ -1360,7 +1367,7 @@ restack(Monitor *m) { Err parazyd.org 70 i XEvent ev; Err parazyd.org 70 i XWindowChanges wc; Err parazyd.org 70 i Err parazyd.org 70 i- drawbars(); Err parazyd.org 70 i+ drawbar(m); Err parazyd.org 70 i if(!m->sel) Err parazyd.org 70 i return; Err parazyd.org 70 i if(m->sel->isfloating || !m->lt[m->sellt]->arrange) Err parazyd.org 70 i@@ -1427,7 +1434,7 @@ sendmon(Client *c, Monitor *m) { Err parazyd.org 70 i attach(c); Err parazyd.org 70 i attachstack(c); Err parazyd.org 70 i focus(NULL); Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(NULL); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i@@ -1442,12 +1449,14 @@ void Err parazyd.org 70 i setlayout(const Arg *arg) { Err parazyd.org 70 i if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) Err parazyd.org 70 i selmon->sellt ^= 1; Err parazyd.org 70 i- if(arg && arg->v) Err parazyd.org 70 i+ if(arg && arg->v) { Err parazyd.org 70 i selmon->lt[selmon->sellt] = (Layout *)arg->v; Err parazyd.org 70 i+ strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol); Err parazyd.org 70 i+ } Err parazyd.org 70 i if(selmon->sel) Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i else Err parazyd.org 70 i- drawbars(); Err parazyd.org 70 i+ drawbar(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i /* arg > 1.0 will set mfact absolutly */ Err parazyd.org 70 i@@ -1461,7 +1470,7 @@ setmfact(const Arg *arg) { Err parazyd.org 70 i if(f < 0.1 || f > 0.9) Err parazyd.org 70 i return; Err parazyd.org 70 i selmon->mfact = f; Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i@@ -1558,7 +1567,7 @@ void Err parazyd.org 70 i tag(const Arg *arg) { Err parazyd.org 70 i if(selmon->sel && arg->ui & TAGMASK) { Err parazyd.org 70 i selmon->sel->tags = arg->ui & TAGMASK; Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i@@ -1615,7 +1624,7 @@ togglebar(const Arg *arg) { Err parazyd.org 70 i selmon->showbar = !selmon->showbar; Err parazyd.org 70 i updatebarpos(selmon); Err parazyd.org 70 i XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i@@ -1626,7 +1635,7 @@ togglefloating(const Arg *arg) { Err parazyd.org 70 i if(selmon->sel->isfloating) Err parazyd.org 70 i resize(selmon->sel, selmon->sel->x, selmon->sel->y, Err parazyd.org 70 i selmon->sel->w, selmon->sel->h, False); Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i@@ -1638,7 +1647,7 @@ toggletag(const Arg *arg) { Err parazyd.org 70 i newtags = selmon->sel->tags ^ (arg->ui & TAGMASK); Err parazyd.org 70 i if(newtags) { Err parazyd.org 70 i selmon->sel->tags = newtags; Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i@@ -1648,7 +1657,7 @@ toggleview(const Arg *arg) { Err parazyd.org 70 i Err parazyd.org 70 i if(newtagset) { Err parazyd.org 70 i selmon->tagset[selmon->seltags] = newtagset; Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i@@ -1663,6 +1672,7 @@ unfocus(Client *c) { Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i unmanage(Client *c, Bool destroyed) { Err parazyd.org 70 i+ Monitor *m = c->mon; Err parazyd.org 70 i XWindowChanges wc; Err parazyd.org 70 i Err parazyd.org 70 i /* The server grab construct avoids race conditions. */ Err parazyd.org 70 i@@ -1681,7 +1691,7 @@ unmanage(Client *c, Bool destroyed) { Err parazyd.org 70 i } Err parazyd.org 70 i free(c); Err parazyd.org 70 i focus(NULL); Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(m); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i void Err parazyd.org 70 i@@ -1908,7 +1918,7 @@ view(const Arg *arg) { Err parazyd.org 70 i selmon->seltags ^= 1; /* toggle sel tagset */ Err parazyd.org 70 i if(arg->ui & TAGMASK) Err parazyd.org 70 i selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(selmon); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i Client * Err parazyd.org 70 i@@ -1986,7 +1996,7 @@ zoom(const Arg *arg) { Err parazyd.org 70 i detach(c); Err parazyd.org 70 i attach(c); Err parazyd.org 70 i focus(c); Err parazyd.org 70 i- arrange(); Err parazyd.org 70 i+ arrange(c->mon); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i int Err parazyd.org 70 .