warp.c (803B)
1 void 2 warp(const Client *c) 3 { 4 Monitor *m; 5 Bar *bar; 6 int x, y; 7 8 if (ignore_warp) 9 return; 10 11 if (!c) { 12 XWarpPointer(dpy, None, root, 0, 0, 0, 0, selmon->wx + selmon->ww / 2, selmon->wy + selmon->wh / 2); 13 return; 14 } 15 16 #if BANISH_PATCH 17 if (cursor_hidden) { 18 mouse_x = c->x + c->w/2; 19 mouse_y = c->y + c->h/2; 20 return; 21 } 22 #endif // BANISH_PATCH 23 24 if (!getrootptr(&x, &y)) 25 return; 26 27 if (!force_warp && 28 (x > c->x - c->bw && 29 y > c->y - c->bw && 30 x < c->x + c->w + c->bw*2 && 31 y < c->y + c->h + c->bw*2)) 32 return; 33 34 force_warp = 0; 35 36 for (m = mons; m; m = m->next) 37 for (bar = m->bar; bar; bar = bar->next) 38 if (x > bar->bx && 39 x < bar->bx + bar->bw && 40 y > bar->by && 41 y < bar->by + bar->bh) 42 return; 43 44 XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2); 45 } 46