aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dmenu.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/dmenu.c b/dmenu.c
index 1cd9f61..9d479f9 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -484,7 +484,7 @@ void
484setup(void) { 484setup(void) {
485 int x, y, screen = DefaultScreen(dc->dpy); 485 int x, y, screen = DefaultScreen(dc->dpy);
486 Window root = RootWindow(dc->dpy, screen); 486 Window root = RootWindow(dc->dpy, screen);
487 XSetWindowAttributes wa; 487 XSetWindowAttributes swa;
488#ifdef XINERAMA 488#ifdef XINERAMA
489 int n; 489 int n;
490 XineramaScreenInfo *info; 490 XineramaScreenInfo *info;
@@ -505,9 +505,14 @@ setup(void) {
505 if((info = XineramaQueryScreens(dc->dpy, &n))) { 505 if((info = XineramaQueryScreens(dc->dpy, &n))) {
506 int i, di; 506 int i, di;
507 unsigned int du; 507 unsigned int du;
508 Window dw; 508 Window w, dw;
509 XWindowAttributes wa;
509 510
510 XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du); 511 XGetInputFocus(dc->dpy, &w, &di);
512 if(w != root && XGetWindowAttributes(dc->dpy, w, &wa))
513 XTranslateCoordinates(dc->dpy, root, root, wa.x, wa.y, &x, &y, &dw);
514 else
515 XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du);
511 for(i = 0; i < n-1; i++) 516 for(i = 0; i < n-1; i++)
512 if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height)) 517 if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height))
513 break; 518 break;
@@ -528,13 +533,13 @@ setup(void) {
528 match(); 533 match();
529 534
530 /* menu window */ 535 /* menu window */
531 wa.override_redirect = True; 536 swa.override_redirect = True;
532 wa.background_pixmap = ParentRelative; 537 swa.background_pixmap = ParentRelative;
533 wa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask; 538 swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
534 win = XCreateWindow(dc->dpy, root, x, y, mw, mh, 0, 539 win = XCreateWindow(dc->dpy, root, x, y, mw, mh, 0,
535 DefaultDepth(dc->dpy, screen), CopyFromParent, 540 DefaultDepth(dc->dpy, screen), CopyFromParent,
536 DefaultVisual(dc->dpy, screen), 541 DefaultVisual(dc->dpy, screen),
537 CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); 542 CWOverrideRedirect | CWBackPixmap | CWEventMask, &swa);
538 543
539 XMapRaised(dc->dpy, win); 544 XMapRaised(dc->dpy, win);
540 resizedc(dc, mw, mh); 545 resizedc(dc, mw, mh);