dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 54dc0d542cbc8eada2250fe80d161a272f30ddac
parent 913333f51840d942bdde891eb2fb3c7f66b83db1
Author: Anselm R Garbe <anselm@garbe.us>
Date:   Tue, 23 Jun 2009 17:34:20 +0100

fixed tagmon, re-using detach/detachstack and attach/attachstack
Diffstat:
Mconfig.mk | 4++--
Mdwm.c | 23++++++++++++++++-------
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/config.mk b/config.mk
@@ -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}
diff --git a/dwm.c b/dwm.c
@@ -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;
         }
     }