making enternotify less focus hungry
authorgarbeam@gmail.com <unknown>
Sat, 25 Jun 2011 08:07:28 +0000 (09:07 +0100)
committergarbeam@gmail.com <unknown>
Sat, 25 Jun 2011 08:07:28 +0000 (09:07 +0100)
BUGS
dwm.c

diff --git a/BUGS b/BUGS
index 267527d..fd1837f 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -8,27 +8,6 @@ reproducible with xrandr -s but not with --output and --mode, strange
 
 ---
 
-> enternotify is handled even when the entered window is already focused
-> (eg moving the mouse to the bar and back, scrolling on the border..)
->
-> focusing might be expensive for some clients (eg dim/light up)
->
-> a possible solution is to modify enternotify:
->
-> +       c = wintoclient(ev->window);
->        if((m = wintomon(ev->window)) && m != selmon) {
->                unfocus(selmon->sel);
->                selmon = m;
->        }
-> +       else if (c == selmon->sel || c == NULL)
-> +               return;
-
----
-
-dmenu appears on the monitor where the pointer is and not on selmon
-
----
-
 yet another corner case:
 open a terminal, focus another monitor, but without moving the mouse
 pointer there
diff --git a/dwm.c b/dwm.c
index 84c0ae6..8c1adeb 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -820,15 +820,19 @@ drawtext(const char *text, unsigned long col[ColLast], Bool invert) {
 
 void
 enternotify(XEvent *e) {
+       Client *c;
        Monitor *m;
        XCrossingEvent *ev = &e->xcrossing;
 
        if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
                return;
+       c = wintoclient(ev->window);
        if((m = wintomon(ev->window)) && m != selmon) {
                unfocus(selmon->sel, True);
                selmon = m;
        }
+       else if(c == selmon->sel || c == NULL)
+               return;
        focus((wintoclient(ev->window)));
 }