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