- Window dw;
-
- XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du);
- for(i = 0, m = -1; i < n; i++)
- if((monitor == info[i].screen_number)
- || (m < 0 && INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height)))
- m = i;
- x = info[m].x_org;
- y = info[m].y_org + (topbar ? 0 : info[m].height - mh);
- mw = info[m].width;
+ Window w, dw;
+ XWindowAttributes wa;
+
+ XGetInputFocus(dc->dpy, &w, &di);
+ if(w != root && XGetWindowAttributes(dc->dpy, w, &wa))
+ XTranslateCoordinates(dc->dpy, root, root, wa.x, wa.y, &x, &y, &dw);
+ else
+ XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du);
+ for(i = 0; i < n-1; i++)
+ if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height))
+ break;
+ x = info[i].x_org;
+ y = info[i].y_org + (topbar ? 0 : info[i].height - mh);
+ mw = info[i].width;