|  |  | @ -138,7 +138,7 @@ static void attachstack(Client *c); | 
			
		
	
		
			
				
					|  |  |  | static void buttonpress(XEvent *e); | 
			
		
	
		
			
				
					|  |  |  | static void checkotherwm(void); | 
			
		
	
		
			
				
					|  |  |  | static void cleanup(void); | 
			
		
	
		
			
				
					|  |  |  | static void clearurgent(void); | 
			
		
	
		
			
				
					|  |  |  | static void clearurgent(Client *c); | 
			
		
	
		
			
				
					|  |  |  | static void configure(Client *c); | 
			
		
	
		
			
				
					|  |  |  | static void configurenotify(XEvent *e); | 
			
		
	
		
			
				
					|  |  |  | static void configurerequest(XEvent *e); | 
			
		
	
	
		
			
				
					|  |  | @ -365,20 +365,15 @@ cleanup(void) { | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | clearurgent(void) { | 
			
		
	
		
			
				
					|  |  |  | clearurgent(Client *c) { | 
			
		
	
		
			
				
					|  |  |  | 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); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | c->isurgent = False; | 
			
		
	
		
			
				
					|  |  |  | if(!(wmh = XGetWMHints(dpy, c->win))) | 
			
		
	
		
			
				
					|  |  |  | return; | 
			
		
	
		
			
				
					|  |  |  | wmh->flags &= ~XUrgencyHint; | 
			
		
	
		
			
				
					|  |  |  | XSetWMHints(dpy, c->win, wmh); | 
			
		
	
		
			
				
					|  |  |  | XFree(wmh); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
	
		
			
				
					|  |  | @ -617,6 +612,8 @@ focus(Client *c) { | 
			
		
	
		
			
				
					|  |  |  | XSetWindowBorder(dpy, sel->win, dc.norm[ColBorder]); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | if(c) { | 
			
		
	
		
			
				
					|  |  |  | if(c->isurgent) | 
			
		
	
		
			
				
					|  |  |  | clearurgent(c); | 
			
		
	
		
			
				
					|  |  |  | detachstack(c); | 
			
		
	
		
			
				
					|  |  |  | attachstack(c); | 
			
		
	
		
			
				
					|  |  |  | grabbuttons(c, True); | 
			
		
	
	
		
			
				
					|  |  | @ -1500,7 +1497,6 @@ toggleview(const Arg *arg) { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if(mask) { | 
			
		
	
		
			
				
					|  |  |  | tagset[seltags] = mask; | 
			
		
	
		
			
				
					|  |  |  | clearurgent(); | 
			
		
	
		
			
				
					|  |  |  | arrange(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -1673,7 +1669,6 @@ view(const Arg *arg) { | 
			
		
	
		
			
				
					|  |  |  | seltags ^= 1; /* toggle sel tagset */ | 
			
		
	
		
			
				
					|  |  |  | if(arg->ui & TAGMASK) | 
			
		
	
		
			
				
					|  |  |  | tagset[seltags] = arg->ui & TAGMASK; | 
			
		
	
		
			
				
					|  |  |  | clearurgent(); | 
			
		
	
		
			
				
					|  |  |  | arrange(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
	
		
			
				
					|  |  | 
 |