applied anydot's urgency hint patch, thanks!
authoranselm@aab
Sun, 13 Jul 2008 18:08:55 +0100
changeset 1309 3affae730034
parent 1308 978d14197052
child 1310 1d52b420daa4
applied anydot's urgency hint patch, thanks!
dwm.c
--- a/dwm.c	Thu Jul 03 17:05:56 2008 +0100
+++ b/dwm.c	Sun Jul 13 18:08:55 2008 +0100
@@ -139,6 +139,7 @@
 static void buttonpress(XEvent *e);
 static void checkotherwm(void);
 static void cleanup(void);
+static void clearurgent(void);
 static void configure(Client *c);
 static void configurenotify(XEvent *e);
 static void configurerequest(XEvent *e);
@@ -375,6 +376,23 @@
 }
 
 void
+clearurgent(void) {
+	XWMHints *wmh;
+	Client *c;
+
+	for(c = clients; c; c = c->next)
+		if(ISVISIBLE(c) && c->isurgent) {
+			c->isurgent = False;
+			if (!(wmh = XGetWMHints(dpy, c->win)))
+				continue;
+
+			wmh->flags &= ~XUrgencyHint;
+			XSetWMHints(dpy, c->win, wmh);
+			XFree(wmh);
+		}
+}
+
+void
 configure(Client *c) {
 	XConfigureEvent ce;
 
@@ -1496,6 +1514,7 @@
 
 	if(mask) {
 		tagset[seltags] = mask;
+		clearurgent();
 		arrange();
 	}
 }
@@ -1626,10 +1645,13 @@
 	XWMHints *wmh;
 
 	if((wmh = XGetWMHints(dpy, c->win))) {
-		if(c == sel)
-			sel->isurgent = False;
+		if(ISVISIBLE(c) && wmh->flags & XUrgencyHint) {
+			wmh->flags &= ~XUrgencyHint;
+			XSetWMHints(dpy, c->win, wmh);
+		}
 		else
 			c->isurgent = (wmh->flags & XUrgencyHint) ? True : False;
+
 		XFree(wmh);
 	}
 }
@@ -1641,6 +1663,7 @@
 	seltags ^= 1; /* toggle sel tagset */
 	if(arg && (arg->ui & TAGMASK))
 		tagset[seltags] = arg->i & TAGMASK;
+	clearurgent();
 	arrange();
 }