making enternotify less focus hungry

This commit is contained in:
garbeam@gmail.com 2011-06-25 09:07:28 +01:00
parent 92fe06b501
commit 3a392b8558
2 changed files with 4 additions and 21 deletions

21
BUGS
View File

@ -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: yet another corner case:
open a terminal, focus another monitor, but without moving the mouse open a terminal, focus another monitor, but without moving the mouse
pointer there pointer there

4
dwm.c
View File

@ -820,15 +820,19 @@ drawtext(const char *text, unsigned long col[ColLast], Bool invert) {
void void
enternotify(XEvent *e) { enternotify(XEvent *e) {
Client *c;
Monitor *m; Monitor *m;
XCrossingEvent *ev = &e->xcrossing; XCrossingEvent *ev = &e->xcrossing;
if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
return; return;
c = wintoclient(ev->window);
if((m = wintomon(ev->window)) && m != selmon) { if((m = wintomon(ev->window)) && m != selmon) {
unfocus(selmon->sel, True); unfocus(selmon->sel, True);
selmon = m; selmon = m;
} }
else if(c == selmon->sel || c == NULL)
return;
focus((wintoclient(ev->window))); focus((wintoclient(ev->window)));
} }