|
|
- void
- warp(const Client *c)
- {
- Monitor *m;
- Bar *bar;
- int x, y;
-
- if (ignore_warp)
- return;
-
- if (!c) {
- XWarpPointer(dpy, None, root, 0, 0, 0, 0, selmon->wx + selmon->ww / 2, selmon->wy + selmon->wh / 2);
- return;
- }
-
- if (!getrootptr(&x, &y))
- return;
-
- if (!force_warp &&
- (x > c->x - c->bw &&
- y > c->y - c->bw &&
- x < c->x + c->w + c->bw*2 &&
- y < c->y + c->h + c->bw*2))
- return;
-
- force_warp = 0;
-
- for (m = mons; m; m = m->next)
- for (bar = m->bar; bar; bar = bar->next)
- if (x > bar->bx &&
- x < bar->bx + bar->bw &&
- y > bar->by &&
- y < bar->by + bar->bh)
- return;
-
- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2);
- }
|