aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorokan2013-10-19 19:39:34 +0000
committerokan2013-10-19 19:39:34 +0000
commit69e13f1a98399a3c2d65af3b8e2283fe6cec512b (patch)
tree18ec0acf69c0365f7ecea572d319a0df07b76035
parent48d530ee6fa7562b2c00f16e84e5b273b03f08ab (diff)
downloadcwm-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.h4
-rw-r--r--client.c7
-rw-r--r--conf.c4
-rw-r--r--xutil.c9
4 files changed, 9 insertions, 15 deletions
diff --git a/calmwm.h b/calmwm.h
index 8c41c70..63308ee 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -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 **);
diff --git a/client.c b/client.c
index 5b3eb5c..2cc7db0 100644
--- a/client.c
+++ b/client.c
@@ -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
diff --git a/conf.c b/conf.c
index c6803a5..ae3fffa 100644
--- a/conf.c
+++ b/conf.c
@@ -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;
diff --git a/xutil.c b/xutil.c
index ef492c3..7d7b13b 100644
--- a/xutil.c
+++ b/xutil.c
@@ -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