]> git.armaanb.net Git - dmenu.git/blobdiff - dmenu.c
removed compiler warning if XINERAMA is disabled
[dmenu.git] / dmenu.c
diff --git a/dmenu.c b/dmenu.c
index 33b1a8926e7c1db8c86972355b48b0f61a5f9034..863a262a5679f728bd7e9789fd3693212fb123fe 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -16,7 +16,8 @@
 #endif
 
 /* macros */
-#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
+#define CLEANMASK(mask)         (mask & ~(numlockmask | LockMask))
+#define INRECT(X,Y,RX,RY,RW,RH) ((X) >= (RX) && (X) < (RX) + (RW) && (Y) >= (RY) && (Y) < (RY) + (RH))
 
 /* enums */
 enum { ColFG, ColBG, ColLast };
@@ -618,10 +619,21 @@ setup(Bool topbar) {
        mh = dc.font.height + 2;
 #if XINERAMA
        if(XineramaIsActive(dpy)) {
-               info = XineramaQueryScreens(dpy, &i);
-               x = info[xidx].x_org;
-               y = topbar ? info[xidx].y_org : info[xidx].y_org + info[xidx].height - mh;
-               mw = info[xidx].width;
+               int n;
+               i = 0;
+               info = XineramaQueryScreens(dpy, &n);
+               if(n > 1) {
+                       int di;
+                       unsigned int dui;
+                       Window dummy;
+                       if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui))
+                               for(i = 0; i < n; 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 = topbar ? info[i].y_org : info[i].y_org + info[i].height - mh;
+               mw = info[i].width;
                XFree(info);
        }
        else