sanders solution is convincing and elegant
This commit is contained in:
		
							parent
							
								
									da0b2a2f31
								
							
						
					
					
						commit
						69b738c097
					
				
							
								
								
									
										8
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								client.c
									
									
									
									
									
								
							| @ -99,14 +99,6 @@ focus(Client *c) | ||||
| 		} | ||||
| 	} | ||||
| 	if(c) { | ||||
| 		if((c->isfloat || arrange == dofloat) && (c != clients)) { | ||||
| 			detach(c); | ||||
| 			if(clients) { | ||||
| 				clients->prev = c; | ||||
| 				c->next = clients; | ||||
| 			} | ||||
| 			clients = c; | ||||
| 		} | ||||
| 		grabbuttons(c, True); | ||||
| 		drawtitle(c); | ||||
| 		XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); | ||||
|  | ||||
							
								
								
									
										48
									
								
								view.c
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								view.c
									
									
									
									
									
								
							| @ -215,52 +215,20 @@ resizecol(Arg *arg) | ||||
| void | ||||
| restack() | ||||
| { | ||||
| 	static unsigned int nwins = 0; | ||||
| 	static Window *wins = NULL; | ||||
| 	unsigned int f, fi, m, mi, n; | ||||
| 	Client *c; | ||||
| 	XEvent ev; | ||||
| 	 | ||||
| 	for(f = 0, m = 0, c = clients; c; c = c->next) | ||||
| 		if(isvisible(c)) { | ||||
| 			if(c->isfloat || arrange == dofloat) | ||||
| 				f++; | ||||
| 			else | ||||
| 				m++; | ||||
| 		} | ||||
| 	if(!(n = 2 * (f + m))) { | ||||
| 		drawstatus(); | ||||
| 	if(!sel) | ||||
| 		return; | ||||
| 	if(sel->isfloat || arrange == dofloat) { | ||||
| 		XRaiseWindow(dpy, sel->win); | ||||
| 		XRaiseWindow(dpy, sel->twin); | ||||
| 	} | ||||
| 	if(nwins < n) { | ||||
| 		nwins = n; | ||||
| 		wins = erealloc(wins, nwins * sizeof(Window)); | ||||
| 	} | ||||
| 
 | ||||
| 	fi = 0; | ||||
| 	mi = 2 * f; | ||||
| 	if(sel) { | ||||
| 		if(sel->isfloat || arrange == dofloat) { | ||||
| 			wins[fi++] = sel->twin; | ||||
| 			wins[fi++] = sel->win; | ||||
| 	if(arrange != dofloat)  | ||||
| 		for(c = nexttiled(clients); c; c = nexttiled(c->next)) { | ||||
| 			XLowerWindow(dpy, c->twin); | ||||
| 			XLowerWindow(dpy, c->win); | ||||
| 		} | ||||
| 		else { | ||||
| 			wins[mi++] = sel->twin; | ||||
| 			wins[mi++] = sel->win; | ||||
| 		} | ||||
| 	} | ||||
| 	for(c = clients; c; c = c->next) | ||||
| 		if(isvisible(c) && c != sel) { | ||||
| 			if(c->isfloat || arrange == dofloat) { | ||||
| 				wins[fi++] = c->twin; | ||||
| 				wins[fi++] = c->win; | ||||
| 			} | ||||
| 			else { | ||||
| 				wins[mi++] = c->twin; | ||||
| 				wins[mi++] = c->win; | ||||
| 			} | ||||
| 		} | ||||
| 	XRestackWindows(dpy, wins, n); | ||||
| 	drawall(); | ||||
| 	XSync(dpy, False); | ||||
| 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe