+ for (i = 0; i < ScreenCount(display); i++)
+ if (screens[i].root == root)
+ break;
+
+ if (rootclick != root && /* if root was just clicked in, use cursor */
+ cur_focus && cur_focus->ws->r && cur_focus->s == &screens[i])
+ r = cur_focus->ws->r;
+ else {
+ Window rr, cr;
+ int x, y, wx, wy;
+ unsigned int mask;
+
+ if (XQueryPointer(display, screens[i].root,
+ &rr, &cr, &x, &y, &wx, &wy, &mask) == False) {
+ r = TAILQ_FIRST(&screens[i].rl);
+ } else {
+ TAILQ_FOREACH(r, &screens[i].rl, entry) {
+ if (x > X(r) && x < X(r) + WIDTH(r) &&
+ y > Y(r) && y < Y(r) + HEIGHT(r)) {
+ break;
+ }
+ }
+
+ if (r == NULL)
+ r = TAILQ_FIRST(&screens[i].rl);
+ }
+ }
+ return (r);