diff options
author | Anselm R Garbe <anselm@garbe.us> | 2009-06-23 17:34:20 +0100 |
---|---|---|
committer | Anselm R Garbe <anselm@garbe.us> | 2009-06-23 17:34:20 +0100 |
commit | 54dc0d542cbc8eada2250fe80d161a272f30ddac (patch) | |
tree | 14106e73f128f403ef2a6ca56468b1c69a81399e | |
parent | 913333f51840d942bdde891eb2fb3c7f66b83db1 (diff) |
fixed tagmon, re-using detach/detachstack and attach/attachstack
-rw-r--r-- | config.mk | 4 | ||||
-rw-r--r-- | dwm.c | 23 |
2 files changed, 18 insertions, 9 deletions
@@ -11,8 +11,8 @@ X11INC = /usr/X11R6/include X11LIB = /usr/X11R6/lib # Xinerama, un-comment if you want it -#XINERAMALIBS = -L${X11LIB} -lXinerama -#XINERAMAFLAGS = -DXINERAMA +XINERAMALIBS = -L${X11LIB} -lXinerama +XINERAMAFLAGS = -DXINERAMA # includes and libs INCS = -I. -I/usr/include -I${X11INC} @@ -375,14 +375,14 @@ arrange(void) { void attach(Client *c) { - c->next = selmon->clients; - selmon->clients = c; + c->next = c->mon->clients; + c->mon->clients = c; } void attachstack(Client *c) { - c->snext = selmon->stack; - selmon->stack = c; + c->snext = c->mon->stack; + c->mon->stack = c; } void @@ -1475,11 +1475,20 @@ tag(const Arg *arg) { void tagmon(const Arg *arg) { unsigned int i; + Client *c; Monitor *m; + if(!(c = selmon->sel)) + return; for(i = 0, m = mons; m; m = m->next, i++) if(i == arg->ui) { - selmon->sel->m = m; + detach(c); + detachstack(c); + c->mon = m; + attach(c); + attachstack(c); + selmon->sel = selmon->stack; + m->sel = c; arrange(); break; } @@ -1695,7 +1704,7 @@ updategeom(void) { for(tm = mons; tm; tm = tm->next) if(tm->screen_number == m->screen_number) { m->clients = tm->clients; - m->stack = tm->stack; + m->sel = m->stack = tm->stack; tm->clients = NULL; tm->stack = NULL; for(c = m->clients; c; c = c->next) @@ -1715,7 +1724,7 @@ updategeom(void) { while(tm->stack) { c = tm->stack->snext; tm->stack->snext = newmons->stack; - newmons->stack = tm->stack; + newmons->sel = newmons->stack = tm->stack; tm->stack = c; } } |