X-Git-Url: http://pileus.org/git/?p=wmpus;a=blobdiff_plain;f=sys-x11.c;h=7ba9b693ce385a5c698f613c62c4f719a8a947f2;hp=08e80e986c1f3dcb42c4fc8b7e9c5af52e9ca590;hb=6e0abca515f58cb87c0c0310bc98ed7d84536344;hpb=799b23dab51822bd9a4156497c0fe4236bd53c76 diff --git a/sys-x11.c b/sys-x11.c index 08e80e9..7ba9b69 100644 --- a/sys-x11.c +++ b/sys-x11.c @@ -317,16 +317,19 @@ void sys_focus(win_t *win) void sys_watch(win_t *win, Key_t key, mod_t mod) { //printf("sys_watch: %p - %x %hhx\n", win, key, mod); + XWindowAttributes attr; + XGetWindowAttributes(win->sys->dpy, win->sys->xid, &attr); + long mask = attr.your_event_mask; if (key_mouse0 <= key && key <= key_mouse7) XGrabButton(win->sys->dpy, btn2x(key), mod2x(mod), win->sys->xid, True, mod.up ? ButtonReleaseMask : ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None); else if (key == key_enter) - XSelectInput(win->sys->dpy, win->sys->xid, EnterWindowMask); + XSelectInput(win->sys->dpy, win->sys->xid, EnterWindowMask|mask); else if (key == key_leave) - XSelectInput(win->sys->dpy, win->sys->xid, LeaveWindowMask); + XSelectInput(win->sys->dpy, win->sys->xid, LeaveWindowMask|mask); else if (key == key_focus || key == key_unfocus) - XSelectInput(win->sys->dpy, win->sys->xid, FocusChangeMask); + XSelectInput(win->sys->dpy, win->sys->xid, FocusChangeMask|mask); else XGrabKey(win->sys->dpy, XKeysymToKeycode(win->sys->dpy, key2x(key)), mod2x(mod), win->sys->xid, True, GrabModeAsync, GrabModeAsync); @@ -343,7 +346,7 @@ win_t *sys_init(void) atoms[wm_proto] = XInternAtom(dpy, "WM_PROTOCOLS", False); atoms[wm_focus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False); XSelectInput(dpy, xid, SubstructureRedirectMask|SubstructureNotifyMask); - //XSetInputFocus(dpy, None, RevertToNone, CurrentTime); + XSetInputFocus(dpy, None, RevertToNone, CurrentTime); return win_find(dpy, xid, 1); }