| tmade arrange() Monitor-dependent as well, fixed the movemouse/resizemouse issu… | |
| git clone git://src.adamsgaard.dk/dwm | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit dd218235369d12ad9d71269db11db05c464a09e0 | |
| parent 9cb9c32ee7d76554cfc44ad8801d70cef9fe25e9 | |
| Author: Anselm R Garbe <[email protected]> | |
| Date: Fri, 22 Feb 2008 10:03:42 +0000 | |
| made arrange() Monitor-dependent as well, fixed the movemouse/resizemouse issues | |
| Diffstat: | |
| M dwm.c | 52 +++++++++++++++++------------… | |
| 1 file changed, 28 insertions(+), 24 deletions(-) | |
| --- | |
| diff --git a/dwm.c b/dwm.c | |
| t@@ -130,7 +130,7 @@ struct Monitor { | |
| /* function declarations */ | |
| void applyrules(Client *c); | |
| -void arrange(void); | |
| +void arrange(Monitor *m); | |
| void attach(Client *c); | |
| void attachstack(Client *c); | |
| void ban(Client *c); | |
| t@@ -299,7 +299,8 @@ applyrules(Client *c) { | |
| } | |
| void | |
| -arrange(void) { | |
| +arrange(Monitor *m) { | |
| + unsigned int i; | |
| Client *c; | |
| for(c = clients; c; c = c->next) | |
| t@@ -308,9 +309,13 @@ arrange(void) { | |
| else | |
| ban(c); | |
| - selmonitor->layout->arrange(selmonitor); | |
| + if(m) | |
| + m->layout->arrange(m); | |
| + else | |
| + for(i = 0; i < mcount; i++) | |
| + m->layout->arrange(&monitors[i]); | |
| focus(NULL); | |
| - restack(selmonitor); | |
| + restack(m); | |
| } | |
| void | |
| t@@ -485,7 +490,7 @@ configurenotify(XEvent *e) { | |
| dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(root, scre… | |
| XResizeWindow(dpy, m->barwin, m->sw, bh); | |
| updatebarpos(m); | |
| - arrange(); | |
| + arrange(m); | |
| } | |
| } | |
| t@@ -1078,7 +1083,7 @@ manage(Window w, XWindowAttributes *wa) { | |
| applyrules(c); | |
| - m = selmonitor; | |
| + m = c->monitor; | |
| c->x = wa->x + m->sx; | |
| c->y = wa->y + m->sy; | |
| t@@ -1122,7 +1127,7 @@ manage(Window w, XWindowAttributes *wa) { | |
| ban(c); | |
| XMapWindow(dpy, c->win); | |
| setclientstate(c, NormalState); | |
| - arrange(); | |
| + arrange(m); | |
| } | |
| void | |
| t@@ -1201,7 +1206,7 @@ movemouse(Client *c) { | |
| ny = m->way; | |
| else if(abs((m->way + m->wah) - (ny + c->h + 2 * c->bo… | |
| ny = m->way + m->wah - c->h - 2 * c->border; | |
| - if((m->layout->arrange != floating) && (abs(nx - c->x)… | |
| + if(!c->isfloating && (m->layout->arrange != floating) … | |
| togglefloating(NULL); | |
| if((m->layout->arrange == floating) || c->isfloating) | |
| resize(c, nx, ny, c->w, c->h, False); | |
| t@@ -1230,7 +1235,7 @@ propertynotify(XEvent *e) { | |
| case XA_WM_TRANSIENT_FOR: | |
| XGetTransientForHint(dpy, c->win, &trans); | |
| if(!c->isfloating && (c->isfloating = (getclient(trans… | |
| - arrange(); | |
| + arrange(c->monitor); | |
| break; | |
| case XA_WM_NORMAL_HINTS: | |
| updatesizehints(c); | |
| t@@ -1262,7 +1267,7 @@ reapply(const char *arg) { | |
| memcpy(c->tags, zerotags, sizeof zerotags); | |
| applyrules(c); | |
| } | |
| - arrange(); | |
| + arrange(NULL); | |
| } | |
| void | |
| t@@ -1366,7 +1371,7 @@ resizemouse(Client *c) { | |
| nw = 1; | |
| if((nh = ev.xmotion.y - ocy - 2 * c->border + 1) <= 0) | |
| nh = 1; | |
| - if((m->layout->arrange != floating) && (abs(nw - c->w)… | |
| + if(!c->isfloating && (m->layout->arrange != floating) … | |
| togglefloating(NULL); | |
| if((m->layout->arrange == floating) || c->isfloating) | |
| resize(c, c->x, c->y, nw, nh, True); | |
| t@@ -1518,7 +1523,7 @@ setlayout(const char *arg) { | |
| m->layout = &layouts[i]; | |
| } | |
| if(sel) | |
| - arrange(); | |
| + arrange(m); | |
| else | |
| drawbar(m); | |
| } | |
| t@@ -1544,7 +1549,7 @@ setmwfact(const char *arg) { | |
| else if(m->mwfact > 0.9) | |
| m->mwfact = 0.9; | |
| } | |
| - arrange(); | |
| + arrange(m); | |
| } | |
| void | |
| t@@ -1697,7 +1702,7 @@ tag(const char *arg) { | |
| for(i = 0; i < LENGTH(tags); i++) | |
| sel->tags[i] = (NULL == arg); | |
| sel->tags[idxoftag(arg)] = True; | |
| - arrange(); | |
| + arrange(sel->monitor); | |
| } | |
| unsigned int | |
| t@@ -1769,7 +1774,7 @@ togglebar(const char *arg) { | |
| else | |
| bpos = BarOff; | |
| updatebarpos(monitorat()); | |
| - arrange(); | |
| + arrange(monitorat()); | |
| } | |
| void | |
| t@@ -1779,7 +1784,7 @@ togglefloating(const char *arg) { | |
| sel->isfloating = !sel->isfloating; | |
| if(sel->isfloating) | |
| resize(sel, sel->x, sel->y, sel->w, sel->h, True); | |
| - arrange(); | |
| + arrange(sel->monitor); | |
| } | |
| void | |
| t@@ -1793,13 +1798,12 @@ toggletag(const char *arg) { | |
| for(j = 0; j < LENGTH(tags) && !sel->tags[j]; j++); | |
| if(j == LENGTH(tags)) | |
| sel->tags[i] = True; /* at least one tag must be enabled */ | |
| - arrange(); | |
| + arrange(sel->monitor); | |
| } | |
| void | |
| toggleview(const char *arg) { | |
| unsigned int i, j; | |
| - | |
| Monitor *m = monitorat(); | |
| i = idxoftag(arg); | |
| t@@ -1807,7 +1811,7 @@ toggleview(const char *arg) { | |
| for(j = 0; j < LENGTH(tags) && !m->seltags[j]; j++); | |
| if(j == LENGTH(tags)) | |
| m->seltags[i] = True; /* at least one tag must be viewed */ | |
| - arrange(); | |
| + arrange(m); | |
| } | |
| void | |
| t@@ -1838,7 +1842,7 @@ unmanage(Client *c) { | |
| XSync(dpy, False); | |
| XSetErrorHandler(xerror); | |
| XUngrabServer(dpy); | |
| - arrange(); | |
| + arrange(NULL); | |
| } | |
| void | |
| t@@ -1988,7 +1992,7 @@ view(const char *arg) { | |
| if(memcmp(m->seltags, tmp, sizeof initags) != 0) { | |
| memcpy(m->prevtags, m->seltags, sizeof initags); | |
| memcpy(m->seltags, tmp, sizeof initags); | |
| - arrange(); | |
| + arrange(m); | |
| } | |
| } | |
| t@@ -2001,7 +2005,7 @@ viewprevtag(const char *arg) { | |
| memcpy(tmp, m->seltags, sizeof initags); | |
| memcpy(m->seltags, m->prevtags, sizeof initags); | |
| memcpy(m->prevtags, tmp, sizeof initags); | |
| - arrange(); | |
| + arrange(m); | |
| } | |
| void | |
| t@@ -2016,7 +2020,7 @@ zoom(const char *arg) { | |
| detach(c); | |
| attach(c); | |
| focus(c); | |
| - arrange(); | |
| + arrange(c->monitor); | |
| } | |
| void | |
| t@@ -2035,7 +2039,7 @@ movetomonitor(const char *arg) { | |
| memcpy(sel->tags, sel->monitor->seltags, sizeof initags); | |
| resize(sel, sel->monitor->wax, sel->monitor->way, sel->w, sel->h, True… | |
| - arrange(); | |
| + arrange(sel->monitor); | |
| } | |
| void |