dwm-flexipatch/patch/warp.c

38 lines
670 B
C
Raw Normal View History

2019-09-14 22:43:35 +00:00
void
warp(const Client *c)
{
Monitor *m;
Bar *bar;
2019-09-14 22:43:35 +00:00
int x, y;
if (ignore_warp)
return;
2019-09-14 22:43:35 +00:00
if (!c) {
XWarpPointer(dpy, None, root, 0, 0, 0, 0, selmon->wx + selmon->ww / 2, selmon->wy + selmon->wh / 2);
2019-09-14 22:43:35 +00:00
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;
2019-09-14 22:43:35 +00:00
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;
2019-09-14 22:43:35 +00:00
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2);
}