diff options
author | okan | 2013-10-19 19:39:34 +0000 |
---|---|---|
committer | okan | 2013-10-19 19:39:34 +0000 |
commit | 69e13f1a98399a3c2d65af3b8e2283fe6cec512b (patch) | |
tree | 18ec0acf69c0365f7ecea572d319a0df07b76035 | |
parent | 48d530ee6fa7562b2c00f16e84e5b273b03f08ab (diff) | |
download | cwm-69e13f1a98399a3c2d65af3b8e2283fe6cec512b.tar.gz |
Using xu_btn_ungrab() buttons during client_leave doesn't work (error
BadValue) when the modifier is already AnyModifier . Instead alter
xu_btn_ungrab() to ungrab AnyButton/AnyModifier and call it only when a
client is coming into focus in client_setactive(), instead of iterating
over ignore mods - matches how we handle key grabs.
Diffstat (limited to '')
-rw-r--r-- | calmwm.h | 4 | ||||
-rw-r--r-- | client.c | 7 | ||||
-rw-r--r-- | conf.c | 4 | ||||
-rw-r--r-- | xutil.c | 9 |
4 files changed, 9 insertions, 15 deletions
@@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: calmwm.h,v 1.221 2013/10/03 13:51:57 okan Exp $ + * $OpenBSD: calmwm.h,v 1.222 2013/10/19 19:39:34 okan Exp $ */ #ifndef _CALMWM_H_ @@ -511,7 +511,7 @@ void conf_screen(struct screen_ctx *); void xev_loop(void); void xu_btn_grab(Window, int, u_int); -void xu_btn_ungrab(Window, int, u_int); +void xu_btn_ungrab(Window); int xu_getprop(Window, Atom, Atom, long, unsigned char **); int xu_get_wm_state(Window, int *); int xu_getstrprop(Window, Atom, char **); @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: client.c,v 1.139 2013/10/19 18:59:22 okan Exp $ + * $OpenBSD: client.c,v 1.140 2013/10/19 19:39:34 okan Exp $ */ #include <sys/param.h> @@ -186,15 +186,10 @@ client_delete(struct client_ctx *cc) void client_leave(struct client_ctx *cc) { - struct screen_ctx *sc; - if (cc == NULL) cc = client_current(); if (cc == NULL) return; - - sc = cc->sc; - xu_btn_ungrab(sc->rootwin, AnyModifier, Button1); } void @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: conf.c,v 1.146 2013/10/07 13:40:26 okan Exp $ + * $OpenBSD: conf.c,v 1.147 2013/10/19 19:39:34 okan Exp $ */ #include <sys/param.h> @@ -649,6 +649,8 @@ conf_grab_mouse(Window win) { struct mousebinding *mb; + xu_btn_ungrab(win); + TAILQ_FOREACH(mb, &Conf.mousebindingq, entry) { if (mb->flags != MOUSEBIND_CTX_WIN) continue; @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: xutil.c,v 1.75 2013/10/03 13:52:00 okan Exp $ + * $OpenBSD: xutil.c,v 1.76 2013/10/19 19:39:34 okan Exp $ */ #include <sys/param.h> @@ -65,12 +65,9 @@ xu_btn_grab(Window win, int mask, u_int btn) } void -xu_btn_ungrab(Window win, int mask, u_int btn) +xu_btn_ungrab(Window win) { - u_int i; - - for (i = 0; i < nitems(ign_mods); i++) - XUngrabButton(X_Dpy, btn, (mask | ign_mods[i]), win); + XUngrabButton(X_Dpy, AnyButton, AnyModifier, win); } void |