diff options
| author | garbeam@gmail.com <unknown> | 2011-06-25 09:07:28 +0100 | 
|---|---|---|
| committer | garbeam@gmail.com <unknown> | 2011-06-25 09:07:28 +0100 | 
| commit | 3a392b855882786d1aa9c842d1c36b5c1cbc576a (patch) | |
| tree | 03650d2f289f1caf5388211a5163a879c574c3d2 | |
| parent | 92fe06b501a5458a6aecdcc53f8d35c2a1f55c1c (diff) | |
making enternotify less focus hungry
| -rw-r--r-- | BUGS | 21 | ||||
| -rw-r--r-- | dwm.c | 4 | 
2 files changed, 4 insertions, 21 deletions
| @@ -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 @@ -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)));  } | 
