|  |  | @ -51,7 +51,7 @@ | 
			
		
	
		
			
				
					|  |  |  | #define MOUSEMASK               (BUTTONMASK|PointerMotionMask) | 
			
		
	
		
			
				
					|  |  |  | #define WIDTH(X)                ((X)->w + 2 * (X)->bw) | 
			
		
	
		
			
				
					|  |  |  | #define HEIGHT(X)               ((X)->h + 2 * (X)->bw) | 
			
		
	
		
			
				
					|  |  |  | #define TAGMASK                 ((int)((1LL << LENGTH(tags)) - 1)) | 
			
		
	
		
			
				
					|  |  |  | #define TAGMASK                 ((int)((1 << LENGTH(tags)) - 1)) | 
			
		
	
		
			
				
					|  |  |  | #define TEXTW(X)                (textnw(X, strlen(X)) + dc.font.height) | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /* enums */ | 
			
		
	
	
		
			
				
					|  |  | @ -271,7 +271,7 @@ static Window root; | 
			
		
	
		
			
				
					|  |  |  | #include "config.h" | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /* compile-time check if all tags fit into an unsigned int bit array. */ | 
			
		
	
		
			
				
					|  |  |  | struct NumTags { char limitexceeded[sizeof(unsigned int) * 8 < LENGTH(tags) ? -1 : 1]; }; | 
			
		
	
		
			
				
					|  |  |  | struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /* function implementations */ | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
	
		
			
				
					|  |  | @ -420,9 +420,9 @@ buttonpress(XEvent *e) { | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | if(ev->window == selmon->barwin) { | 
			
		
	
		
			
				
					|  |  |  | i = x = 0; | 
			
		
	
		
			
				
					|  |  |  | do | 
			
		
	
		
			
				
					|  |  |  | do { | 
			
		
	
		
			
				
					|  |  |  | x += TEXTW(tags[i]); | 
			
		
	
		
			
				
					|  |  |  | while(ev->x >= x && ++i < LENGTH(tags)); | 
			
		
	
		
			
				
					|  |  |  | } while(ev->x >= x && ++i < LENGTH(tags)); | 
			
		
	
		
			
				
					|  |  |  | if(i < LENGTH(tags)) { | 
			
		
	
		
			
				
					|  |  |  | click = ClkTagBar; | 
			
		
	
		
			
				
					|  |  |  | arg.ui = 1 << i; | 
			
		
	
	
		
			
				
					|  |  | @ -977,6 +977,7 @@ initfont(const char *fontstr) { | 
			
		
	
		
			
				
					|  |  |  | XFontSetExtents *font_extents; | 
			
		
	
		
			
				
					|  |  |  | XFontStruct **xfonts; | 
			
		
	
		
			
				
					|  |  |  | char **font_names; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | dc.font.ascent = dc.font.descent = 0; | 
			
		
	
		
			
				
					|  |  |  | font_extents = XExtentsOfFontSet(dc.font.set); | 
			
		
	
		
			
				
					|  |  |  | n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names); | 
			
		
	
	
		
			
				
					|  |  | @ -1184,8 +1185,7 @@ movemouse(const Arg *arg) { | 
			
		
	
		
			
				
					|  |  |  | resize(c, nx, ny, c->w, c->h, True); | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | while(ev.type != ButtonRelease); | 
			
		
	
		
			
				
					|  |  |  | } while(ev.type != ButtonRelease); | 
			
		
	
		
			
				
					|  |  |  | XUngrabPointer(dpy, CurrentTime); | 
			
		
	
		
			
				
					|  |  |  | if((m = ptrtomon(c->x + c->w / 2, c->y + c->h / 2)) != selmon) { | 
			
		
	
		
			
				
					|  |  |  | sendmon(c, m); | 
			
		
	
	
		
			
				
					|  |  | @ -1303,8 +1303,7 @@ resizemouse(const Arg *arg) { | 
			
		
	
		
			
				
					|  |  |  | resize(c, c->x, c->y, nw, nh, True); | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | while(ev.type != ButtonRelease); | 
			
		
	
		
			
				
					|  |  |  | } while(ev.type != ButtonRelease); | 
			
		
	
		
			
				
					|  |  |  | XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); | 
			
		
	
		
			
				
					|  |  |  | XUngrabPointer(dpy, CurrentTime); | 
			
		
	
		
			
				
					|  |  |  | while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | 
			
		
	
	
		
			
				
					|  |  | @ -1347,7 +1346,7 @@ run(void) { | 
			
		
	
		
			
				
					|  |  |  | XSync(dpy, False); | 
			
		
	
		
			
				
					|  |  |  | while(running && !XNextEvent(dpy, &ev)) | 
			
		
	
		
			
				
					|  |  |  | if(handler[ev.type]) | 
			
		
	
		
			
				
					|  |  |  | (handler[ev.type])(&ev); /* call handler */ | 
			
		
	
		
			
				
					|  |  |  | handler[ev.type](&ev); /* call handler */ | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
	
		
			
				
					|  |  | 
 |