got rid of compile time xidx, grabbing the mouse pointer instead, falling back to screen 0 if no pointer available
4d8a6469
2 file(s) · +17 −11
| 6 | 6 | static const char *normfgcolor = "#000000"; |
|
| 7 | 7 | static const char *selbgcolor = "#0066ff"; |
|
| 8 | 8 | static const char *selfgcolor = "#ffffff"; |
|
| 9 | - | ||
| 10 | 9 | static unsigned int spaceitem = 30; /* px between menu items */ |
|
| 11 | - | ||
| 12 | - | #ifdef XINERAMA |
|
| 13 | - | static unsigned int xidx = 0; /* Xinerama screen index to use */ |
|
| 14 | - | #endif |
| 16 | 16 | #endif |
|
| 17 | 17 | ||
| 18 | 18 | /* macros */ |
|
| 19 | - | #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) |
|
| 19 | + | #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) |
|
| 20 | + | #define INRECT(X,Y,RX,RY,RW,RH) ((X) >= (RX) && (X) < (RX) + (RW) && (Y) >= (RY) && (Y) < (RY) + (RH)) |
|
| 20 | 21 | ||
| 21 | 22 | /* enums */ |
|
| 22 | 23 | enum { ColFG, ColBG, ColLast }; |
|
| 585 | 586 | ||
| 586 | 587 | void |
|
| 587 | 588 | setup(Bool topbar) { |
|
| 588 | - | int i, j, x, y; |
|
| 589 | + | int i, j, n, x, y; |
|
| 589 | 590 | XModifierKeymap *modmap; |
|
| 590 | 591 | XSetWindowAttributes wa; |
|
| 591 | 592 | #if XINERAMA |
|
| 618 | 619 | mh = dc.font.height + 2; |
|
| 619 | 620 | #if XINERAMA |
|
| 620 | 621 | if(XineramaIsActive(dpy)) { |
|
| 621 | - | info = XineramaQueryScreens(dpy, &i); |
|
| 622 | - | x = info[xidx].x_org; |
|
| 623 | - | y = topbar ? info[xidx].y_org : info[xidx].y_org + info[xidx].height - mh; |
|
| 624 | - | mw = info[xidx].width; |
|
| 622 | + | i = 0; |
|
| 623 | + | info = XineramaQueryScreens(dpy, &n); |
|
| 624 | + | if(n > 1) { |
|
| 625 | + | int di; |
|
| 626 | + | unsigned int dui; |
|
| 627 | + | Window dummy; |
|
| 628 | + | if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui)) |
|
| 629 | + | for(i = 0; i < n; i++) |
|
| 630 | + | if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height)) |
|
| 631 | + | break; |
|
| 632 | + | } |
|
| 633 | + | x = info[i].x_org; |
|
| 634 | + | y = topbar ? info[i].y_org : info[i].y_org + info[i].height - mh; |
|
| 635 | + | mw = info[i].width; |
|
| 625 | 636 | XFree(info); |
|
| 626 | 637 | } |
|
| 627 | 638 | else |
|