Only when mapping clients from an initial wm start or restart, query the

pointer and if it matches the child window, activate it; new clients
will not need to make this roundtrip to the server.

Based on a patch from Preben Guldberg.
This commit is contained in:
okan 2015-09-23 14:09:40 +00:00
parent 0fdcf3f3df
commit 5fcf251672

View File

@ -48,6 +48,9 @@ client_init(Window win, struct screen_ctx *sc)
struct client_ctx *cc;
XWindowAttributes wattr;
int mapped;
Window rwin, cwin;
int x, y, wx, wy, activate = 0;
unsigned int mask;
if (win == None)
return(NULL);
@ -97,6 +100,10 @@ client_init(Window win, struct screen_ctx *sc)
client_move(cc);
if ((cc->wmh) && (cc->wmh->flags & StateHint))
client_set_wm_state(cc, cc->wmh->initial_state);
} else {
if ((XQueryPointer(X_Dpy, cc->win, &rwin, &cwin,
&x, &y, &wx, &wy, &mask)) && (cwin != None))
activate = 1;
}
XSelectInput(X_Dpy, cc->win, ColormapChangeMask | EnterWindowMask |
@ -134,6 +141,9 @@ out:
XSync(X_Dpy, False);
XUngrabServer(X_Dpy);
if (activate)
client_setactive(cc);
return(cc);
}