| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -380,7 +380,6 @@ void | 
															
														
														
													
														
															
																 | 
																 | 
																arrange(void) { | 
																 | 
																 | 
																arrange(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	Monitor *m; | 
																 | 
																 | 
																	Monitor *m; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	/* optimise two loops into one, check focus(NULL) */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	for(m = mons; m; m = m->next) | 
																 | 
																 | 
																	for(m = mons; m; m = m->next) | 
															
														
														
													
														
															
																 | 
																 | 
																		showhide(m->stack); | 
																 | 
																 | 
																		showhide(m->stack); | 
															
														
														
													
														
															
																 | 
																 | 
																	focus(NULL); | 
																 | 
																 | 
																	focus(NULL); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -440,7 +439,7 @@ buttonpress(XEvent *e) { | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = 0; i < LENGTH(buttons); i++) | 
																 | 
																 | 
																	for(i = 0; i < LENGTH(buttons); i++) | 
															
														
														
													
														
															
																 | 
																 | 
																		if(click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button | 
																 | 
																 | 
																		if(click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button | 
															
														
														
													
														
															
																 | 
																 | 
																		   && CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		&& CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state)) | 
															
														
														
													
														
															
																 | 
																 | 
																			buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg); | 
																 | 
																 | 
																			buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -885,7 +884,7 @@ getstate(Window w) { | 
															
														
														
													
														
															
																 | 
																 | 
																	Atom real; | 
																 | 
																 | 
																	Atom real; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	status = XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState], | 
																 | 
																 | 
																	status = XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState], | 
															
														
														
													
														
															
																 | 
																 | 
																			&real, &format, &n, &extra, (unsigned char **)&p); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	                            &real, &format, &n, &extra, (unsigned char **)&p); | 
															
														
														
													
														
															
																 | 
																 | 
																	if(status != Success) | 
																 | 
																 | 
																	if(status != Success) | 
															
														
														
													
														
															
																 | 
																 | 
																		return -1; | 
																 | 
																 | 
																		return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																	if(n != 0) | 
																 | 
																 | 
																	if(n != 0) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -909,9 +908,7 @@ gettextprop(Window w, Atom atom, char *text, unsigned int size) { | 
															
														
														
													
														
															
																 | 
																 | 
																	if(name.encoding == XA_STRING) | 
																 | 
																 | 
																	if(name.encoding == XA_STRING) | 
															
														
														
													
														
															
																 | 
																 | 
																		strncpy(text, (char *)name.value, size - 1); | 
																 | 
																 | 
																		strncpy(text, (char *)name.value, size - 1); | 
															
														
														
													
														
															
																 | 
																 | 
																	else { | 
																 | 
																 | 
																	else { | 
															
														
														
													
														
															
																 | 
																 | 
																		if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		&& n > 0 && *list) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		{ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success && n > 0 && *list) { | 
															
														
														
													
														
															
																 | 
																 | 
																			strncpy(text, *list, size - 1); | 
																 | 
																 | 
																			strncpy(text, *list, size - 1); | 
															
														
														
													
														
															
																 | 
																 | 
																			XFreeStringList(list); | 
																 | 
																 | 
																			XFreeStringList(list); | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																		} | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1022,8 +1019,8 @@ keypress(XEvent *e) { | 
															
														
														
													
														
															
																 | 
																 | 
																	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); | 
																 | 
																 | 
																	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = 0; i < LENGTH(keys); i++) | 
																 | 
																 | 
																	for(i = 0; i < LENGTH(keys); i++) | 
															
														
														
													
														
															
																 | 
																 | 
																		if(keysym == keys[i].keysym | 
																 | 
																 | 
																		if(keysym == keys[i].keysym | 
															
														
														
													
														
															
																 | 
																 | 
																		   && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		   && keys[i].func) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		&& CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		&& keys[i].func) | 
															
														
														
													
														
															
																 | 
																 | 
																			keys[i].func(&(keys[i].arg)); | 
																 | 
																 | 
																			keys[i].func(&(keys[i].arg)); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1168,7 +1165,7 @@ movemouse(const Arg *arg) { | 
															
														
														
													
														
															
																 | 
																 | 
																			nx = ocx + (ev.xmotion.x - x); | 
																 | 
																 | 
																			nx = ocx + (ev.xmotion.x - x); | 
															
														
														
													
														
															
																 | 
																 | 
																			ny = ocy + (ev.xmotion.y - y); | 
																 | 
																 | 
																			ny = ocy + (ev.xmotion.y - y); | 
															
														
														
													
														
															
																 | 
																 | 
																			if(snap && nx >= selmon->wx && nx <= selmon->wx + selmon->ww | 
																 | 
																 | 
																			if(snap && nx >= selmon->wx && nx <= selmon->wx + selmon->ww | 
															
														
														
													
														
															
																 | 
																 | 
																			        && ny >= selmon->wy && ny <= selmon->wy + selmon->wh) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			&& ny >= selmon->wy && ny <= selmon->wy + selmon->wh) { | 
															
														
														
													
														
															
																 | 
																 | 
																				if(abs(selmon->wx - nx) < snap) | 
																 | 
																 | 
																				if(abs(selmon->wx - nx) < snap) | 
															
														
														
													
														
															
																 | 
																 | 
																					nx = selmon->wx; | 
																 | 
																 | 
																					nx = selmon->wx; | 
															
														
														
													
														
															
																 | 
																 | 
																				else if(abs((selmon->wx + selmon->ww) - (nx + WIDTH(c))) < snap) | 
																 | 
																 | 
																				else if(abs((selmon->wx + selmon->ww) - (nx + WIDTH(c))) < snap) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -1178,7 +1175,7 @@ movemouse(const Arg *arg) { | 
															
														
														
													
														
															
																 | 
																 | 
																				else if(abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap) | 
																 | 
																 | 
																				else if(abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap) | 
															
														
														
													
														
															
																 | 
																 | 
																					ny = selmon->wy + selmon->wh - HEIGHT(c); | 
																 | 
																 | 
																					ny = selmon->wy + selmon->wh - HEIGHT(c); | 
															
														
														
													
														
															
																 | 
																 | 
																				if(!c->isfloating && selmon->lt[selmon->sellt]->arrange | 
																 | 
																 | 
																				if(!c->isfloating && selmon->lt[selmon->sellt]->arrange | 
															
														
														
													
														
															
																 | 
																 | 
																				                  && (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				&& (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) | 
															
														
														
													
														
															
																 | 
																 | 
																					togglefloating(NULL); | 
																 | 
																 | 
																					togglefloating(NULL); | 
															
														
														
													
														
															
																 | 
																 | 
																			} | 
																 | 
																 | 
																			} | 
															
														
														
													
														
															
																 | 
																 | 
																			if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) | 
																 | 
																 | 
																			if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1279,7 +1276,7 @@ resizemouse(const Arg *arg) { | 
															
														
														
													
														
															
																 | 
																 | 
																	ocx = c->x; | 
																 | 
																 | 
																	ocx = c->x; | 
															
														
														
													
														
															
																 | 
																 | 
																	ocy = c->y; | 
																 | 
																 | 
																	ocy = c->y; | 
															
														
														
													
														
															
																 | 
																 | 
																	if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, | 
																 | 
																 | 
																	if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, | 
															
														
														
													
														
															
																 | 
																 | 
																	None, cursor[CurResize], CurrentTime) != GrabSuccess) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	                None, cursor[CurResize], CurrentTime) != GrabSuccess) | 
															
														
														
													
														
															
																 | 
																 | 
																		return; | 
																 | 
																 | 
																		return; | 
															
														
														
													
														
															
																 | 
																 | 
																	XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); | 
																 | 
																 | 
																	XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); | 
															
														
														
													
														
															
																 | 
																 | 
																	do { | 
																 | 
																 | 
																	do { | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -1294,9 +1291,10 @@ resizemouse(const Arg *arg) { | 
															
														
														
													
														
															
																 | 
																 | 
																			nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1); | 
																 | 
																 | 
																			nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1); | 
															
														
														
													
														
															
																 | 
																 | 
																			nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1); | 
																 | 
																 | 
																			nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1); | 
															
														
														
													
														
															
																 | 
																 | 
																			if(snap && nw >= selmon->wx && nw <= selmon->wx + selmon->ww | 
																 | 
																 | 
																			if(snap && nw >= selmon->wx && nw <= selmon->wx + selmon->ww | 
															
														
														
													
														
															
																 | 
																 | 
																			        && nh >= selmon->wy && nh <= selmon->wy + selmon->wh) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			&& nh >= selmon->wy && nh <= selmon->wy + selmon->wh) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			{ | 
															
														
														
													
														
															
																 | 
																 | 
																				if(!c->isfloating && selmon->lt[selmon->sellt]->arrange | 
																 | 
																 | 
																				if(!c->isfloating && selmon->lt[selmon->sellt]->arrange | 
															
														
														
													
														
															
																 | 
																 | 
																				   && (abs(nw - c->w) > snap || abs(nh - c->h) > snap)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				&& (abs(nw - c->w) > snap || abs(nh - c->h) > snap)) | 
															
														
														
													
														
															
																 | 
																 | 
																					togglefloating(NULL); | 
																 | 
																 | 
																					togglefloating(NULL); | 
															
														
														
													
														
															
																 | 
																 | 
																			} | 
																 | 
																 | 
																			} | 
															
														
														
													
														
															
																 | 
																 | 
																			if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) | 
																 | 
																 | 
																			if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1473,8 +1471,8 @@ setup(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	/* select for events */ | 
																 | 
																 | 
																	/* select for events */ | 
															
														
														
													
														
															
																 | 
																 | 
																	wa.cursor = cursor[CurNormal]; | 
																 | 
																 | 
																	wa.cursor = cursor[CurNormal]; | 
															
														
														
													
														
															
																 | 
																 | 
																	wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask | 
																 | 
																 | 
																	wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask | 
															
														
														
													
														
															
																 | 
																 | 
																			|EnterWindowMask|LeaveWindowMask|StructureNotifyMask | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			|PropertyChangeMask; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	                |EnterWindowMask|LeaveWindowMask|StructureNotifyMask | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	                |PropertyChangeMask; | 
															
														
														
													
														
															
																 | 
																 | 
																	XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa); | 
																 | 
																 | 
																	XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa); | 
															
														
														
													
														
															
																 | 
																 | 
																	XSelectInput(dpy, root, wa.event_mask); | 
																 | 
																 | 
																	XSelectInput(dpy, root, wa.event_mask); | 
															
														
														
													
														
															
																 | 
																 | 
																	grabkeys(); | 
																 | 
																 | 
																	grabkeys(); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |