some cleanup handling for index based mon search
authorAnselm R Garbe <anselm@garbe.us>
Sat, 27 Jun 2009 18:50:50 +0100
changeset 1427 f8ea02f86861
parent 1426 f8ee1d055e66
child 1428 2245e2b88983
some cleanup handling for index based mon search
dwm.c
--- a/dwm.c	Sat Jun 27 18:42:10 2009 +0100
+++ b/dwm.c	Sat Jun 27 18:50:50 2009 +0100
@@ -177,6 +177,7 @@
 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 @@
 #ifdef XINERAMA
 void
 focusmon(const Arg *arg) {
-	unsigned int i;
-	Monitor *m; 
+	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;
-		}
+	if(!(m = getmonn(arg->ui)) || m == selmon)
+		return;
+	unfocus(selmon->sel);
+	selmon = m;
+	focus(NULL);
 }
 #endif /* XINERAMA */
 
@@ -880,6 +876,15 @@
 }
 
 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 @@
 #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 */