diff options
author | okan <okan> | 2017-12-29 18:50:43 +0000 |
---|---|---|
committer | okan <okan> | 2017-12-29 18:50:43 +0000 |
commit | 43db5b55eaae67515ae926c0d195c1ef6aa4b607 (patch) | |
tree | 38df44627467c7a934ee98e73c80bc44dbfcd2b1 /xevents.c | |
parent | ba75c139531d2a52dfa43a0302d9c8886ed1a820 (diff) | |
download | cwm-43db5b55eaae67515ae926c0d195c1ef6aa4b607.tar.gz cwm-43db5b55eaae67515ae926c0d195c1ef6aa4b607.tar.xz cwm-43db5b55eaae67515ae926c0d195c1ef6aa4b607.zip |
As done for buttonrelease, work specific un-cycling and un-highlighting actions
into the keyrelease event, only performing what's actually needed for each; should result in much fewer events against keyreleases. No intended behaviour change. Additionally, like we do for group membership, grab the keyboard only when required for cycling.
Diffstat (limited to 'xevents.c')
-rw-r--r-- | xevents.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/xevents.c b/xevents.c index 444b99a..784f8d0 100644 --- a/xevents.c +++ b/xevents.c @@ -324,6 +324,7 @@ xev_handle_keyrelease(XEvent *ee) { XKeyEvent *e = &ee->xkey; struct screen_ctx *sc; + struct client_ctx *cc; KeySym keysym; unsigned int i; @@ -333,7 +334,17 @@ xev_handle_keyrelease(XEvent *ee) keysym = XkbKeycodeToKeysym(X_Dpy, e->keycode, 0, 0); for (i = 0; i < nitems(modkeys); i++) { if (keysym == modkeys[i]) { - client_cycle_leave(sc); + if ((cc = client_current()) != NULL) { + if (sc->cycling) { + sc->cycling = 0; + client_mtf(cc); + } + if (cc->flags & CLIENT_HIGHLIGHT) { + cc->flags &= ~CLIENT_HIGHLIGHT; + client_draw_border(cc); + } + } + XUngrabKeyboard(X_Dpy, CurrentTime); break; } } |