changeset: 438:e340de0a8fd7
tag: tip
parent: 434:d007288ed923
user: Connor Lane Smith <cls_AT_lubutu.com>
date: Mon Sep 19 18:15:03 2011 +0100
files: dmenu.c
description:
detect active monitor using input focus
diff -r d007288ed923 -r e340de0a8fd7 dmenu.c
--- a/dmenu.c Mon Sep 19 10:40:07 2011 +0100
+++ b/dmenu.c Mon Sep 19 18:15:03 2011 +0100
@@ -473,7 +473,7 @@
setup(void) {
int x, y, screen = DefaultScreen(dc->dpy);
Window root = RootWindow(dc->dpy, screen);
- XSetWindowAttributes wa;
+ XSetWindowAttributes swa;
#ifdef XINERAMA
int n;
XineramaScreenInfo *info;
@@ -494,9 +494,14 @@
if((info = XineramaQueryScreens(dc->dpy, &n))) {
int i, di;
unsigned int du;
- Window dw;
+ Window w, dw;
+ XWindowAttributes wa;
- XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du);
+ 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;
@@ -517,13 +522,13 @@
match(False);
/* menu window */
- wa.override_redirect = True;
- wa.background_pixmap = ParentRelative;
- wa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
+ swa.override_redirect = True;
+ swa.background_pixmap = ParentRelative;
+ swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
win = XCreateWindow(dc->dpy, root, x, y, mw, mh, 0,
DefaultDepth(dc->dpy, screen), CopyFromParent,
DefaultVisual(dc->dpy, screen),
- CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
+ CWOverrideRedirect | CWBackPixmap | CWEventMask, &swa);
XMapRaised(dc->dpy, win);
resizedc(dc, mw, mh);
Received on Mon Sep 19 2011 - 19:16:50 CEST
This archive was generated by hypermail 2.2.0 : Mon Sep 19 2011 - 19:24:05 CEST