[hackers] [dmenu] detect active monitor using input focus || Connor Lane Smith

From: <hg_AT_suckless.org>
Date: Mon, 19 Sep 2011 19:16:50 +0200 (CEST)

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