diff options
| author | Anselm R Garbe <anselm@garbe.us> | 2009-06-27 18:50:50 +0100 | 
|---|---|---|
| committer | Anselm R Garbe <anselm@garbe.us> | 2009-06-27 18:50:50 +0100 | 
| commit | 029655bb2271a18d3a191f22502cbd9b713a9189 (patch) | |
| tree | ce6bc8068cc81ab706186b374ab042ca8eebd4fc | |
| parent | 27db9d44489fea54275de9d25a9eff7118ebb3ea (diff) | |
some cleanup handling for index based mon search
| -rw-r--r-- | dwm.c | 39 | 
1 files changed, 19 insertions, 20 deletions
@@ -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 */  | 
