got rid of compile time xidx, grabbing the mouse pointer instead, falling back to screen 0 if no pointer available
This commit is contained in:
parent
b89a9501c7
commit
4d8a646958
5
config.h
5
config.h
|
@ -6,9 +6,4 @@ static const char *normbgcolor = "#cccccc";
|
||||||
static const char *normfgcolor = "#000000";
|
static const char *normfgcolor = "#000000";
|
||||||
static const char *selbgcolor = "#0066ff";
|
static const char *selbgcolor = "#0066ff";
|
||||||
static const char *selfgcolor = "#ffffff";
|
static const char *selfgcolor = "#ffffff";
|
||||||
|
|
||||||
static unsigned int spaceitem = 30; /* px between menu items */
|
static unsigned int spaceitem = 30; /* px between menu items */
|
||||||
|
|
||||||
#ifdef XINERAMA
|
|
||||||
static unsigned int xidx = 0; /* Xinerama screen index to use */
|
|
||||||
#endif
|
|
||||||
|
|
21
dmenu.c
21
dmenu.c
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
/* macros */
|
/* 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 */
|
/* enums */
|
||||||
enum { ColFG, ColBG, ColLast };
|
enum { ColFG, ColBG, ColLast };
|
||||||
|
@ -585,7 +586,7 @@ run(void) {
|
||||||
|
|
||||||
void
|
void
|
||||||
setup(Bool topbar) {
|
setup(Bool topbar) {
|
||||||
int i, j, x, y;
|
int i, j, n, x, y;
|
||||||
XModifierKeymap *modmap;
|
XModifierKeymap *modmap;
|
||||||
XSetWindowAttributes wa;
|
XSetWindowAttributes wa;
|
||||||
#if XINERAMA
|
#if XINERAMA
|
||||||
|
@ -618,10 +619,20 @@ setup(Bool topbar) {
|
||||||
mh = dc.font.height + 2;
|
mh = dc.font.height + 2;
|
||||||
#if XINERAMA
|
#if XINERAMA
|
||||||
if(XineramaIsActive(dpy)) {
|
if(XineramaIsActive(dpy)) {
|
||||||
info = XineramaQueryScreens(dpy, &i);
|
i = 0;
|
||||||
x = info[xidx].x_org;
|
info = XineramaQueryScreens(dpy, &n);
|
||||||
y = topbar ? info[xidx].y_org : info[xidx].y_org + info[xidx].height - mh;
|
if(n > 1) {
|
||||||
mw = info[xidx].width;
|
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);
|
XFree(info);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue