|
|
@@ -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 */
|
|
|
|
|
|
@@ -879,6 +875,15 @@ getmon(Window w) {
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+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 */
|
|
|
|