diff options
author | okan | 2013-12-13 14:40:52 +0000 |
---|---|---|
committer | okan | 2013-12-13 14:40:52 +0000 |
commit | 8bf0caccf5ae3af242795fe54cb48ec4b847d0e3 (patch) | |
tree | 2f1b843524267a87193b4f21e9b478e5646cbf96 /client.c | |
parent | 754e61eb263aa34c713a1854a432f4fc979453d7 (diff) | |
download | cwm-8bf0caccf5ae3af242795fe54cb48ec4b847d0e3.tar.gz |
Add support for XUrgency and matching _NET_WM_STATE_DEMANDS_ATTENTION
ewmh hint; urgencyborder is configurable. The urgency flag will stick,
even while on a client in a non-viewable group, until the client
receives focus (where the border is reset). Initial diff from Thomas
Adam with some changes/enhancements from me.
Diffstat (limited to 'client.c')
-rw-r--r-- | client.c | 15 |
1 files changed, 14 insertions, 1 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: client.c,v 1.160 2013/12/12 20:15:07 okan Exp $ + * $OpenBSD: client.c,v 1.161 2013/12/13 14:40:52 okan Exp $ */ #include <sys/param.h> @@ -192,6 +192,7 @@ client_setactive(struct client_ctx *cc) _curcc = cc; cc->active = 1; + cc->flags &= ~CLIENT_URGENCY; client_draw_border(cc); conf_grab_mouse(cc->win); xu_ewmh_net_active_window(sc, cc->win); @@ -462,6 +463,12 @@ client_unhide(struct client_ctx *cc) } void +client_urgency(struct client_ctx *cc) +{ + cc->flags |= CLIENT_URGENCY; +} + +void client_draw_border(struct client_ctx *cc) { struct screen_ctx *sc = cc->sc; @@ -482,6 +489,9 @@ client_draw_border(struct client_ctx *cc) else pixel = sc->xftcolor[CWM_COLOR_BORDER_INACTIVE].pixel; + if (cc->flags & CLIENT_URGENCY) + pixel = sc->xftcolor[CWM_COLOR_BORDER_URGENCY].pixel; + XSetWindowBorderWidth(X_Dpy, cc->win, cc->bwidth); XSetWindowBorder(X_Dpy, cc->win, pixel); } @@ -511,6 +521,9 @@ client_wm_hints(struct client_ctx *cc) if ((cc->wmh->flags & InputHint) && (cc->wmh->input)) cc->flags |= CLIENT_INPUT; + + if ((cc->wmh->flags & XUrgencyHint)) + client_urgency(cc); } void |