dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 029655bb2271a18d3a191f22502cbd9b713a9189
parent 27db9d44489fea54275de9d25a9eff7118ebb3ea
Author: Anselm R Garbe <anselm@garbe.us>
Date:   Sat, 27 Jun 2009 18:50:50 +0100

some cleanup handling for index based mon search
Diffstat:
Mdwm.c | 39+++++++++++++++++++--------------------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/dwm.c b/dwm.c
@@ -177,6 +177,7 @@ static void focusstack(const Arg *arg);
 static Client *getclient(Window w);
 static unsigned long getcolor(const char *colstr);
 static Monitor *getmon(Window w);
+static Monitor *getmonn(unsigned int n);
 static Monitor *getmonxy(int x, int y);
 static Bool getrootpointer(int *x, int *y);
 static long getstate(Window w);
@@ -800,18 +801,13 @@ focusin(XEvent *e) { /* there are some broken focus acquiring clients */
 #ifdef XINERAMA
 void
 focusmon(const Arg *arg) {
-    unsigned int i;
-    Monitor *m; 
-
-    for(i = 0, m = mons; m; m = m->next, i++)
-        if(i == arg->ui) {
-            if(m == selmon)
-                return;
-            unfocus(selmon->sel);
-            selmon = m;
-            focus(NULL);
-            break;
-        }
+    Monitor *m;
+
+    if(!(m = getmonn(arg->ui)) || m == selmon)
+        return;
+    unfocus(selmon->sel);
+    selmon = m;
+    focus(NULL);
 }
 #endif /* XINERAMA */
 
@@ -880,6 +876,15 @@ getmon(Window w) {
 }
 
 Monitor *
+getmonn(unsigned int n) {
+    unsigned int i;
+    Monitor *m;
+
+    for(m = mons, i = 0; m && i != n; m = m->next, i++);
+    return m;
+}
+
+Monitor *
 getmonxy(int x, int y) {
     Monitor *m;
 
@@ -1542,17 +1547,11 @@ tag(const Arg *arg) {
 #ifdef XINERAMA
 void
 tagmon(const Arg *arg) {
-    unsigned int i;
-    Client *c;
     Monitor *m;
 
-    if(!(c = selmon->sel))
+    if(!selmon->sel || !(m = getmonn(arg->ui)))
         return;
-    for(i = 0, m = mons; m; m = m->next, i++)
-        if(i == arg->ui) {
-            sendmon(c, m);
-            break;
-        }
+    sendmon(selmon->sel, m);
 }
 #endif /* XINERAMA */