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…
	
		Reference in New Issue