23 lines
		
	
	
		
			630 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			630 B
		
	
	
	
		
			C
		
	
	
	
	
	
| void
 | |
| swapfocus(const Arg *arg)
 | |
| {
 | |
|    if (!selmon->sel)
 | |
|        return;
 | |
|    if (selmon->pertag->prevclient[selmon->pertag->curtag] != NULL
 | |
|            && ISVISIBLE(selmon->pertag->prevclient[selmon->pertag->curtag])) {
 | |
|        focus(selmon->pertag->prevclient[selmon->pertag->curtag]);
 | |
|        restack(selmon->pertag->prevclient[selmon->pertag->curtag]->mon);
 | |
|    }
 | |
|    else {
 | |
|        Client *c = NULL;
 | |
|        for (c = selmon->sel->next; c && !ISVISIBLE(c); c = c->next);
 | |
|        if (!c)
 | |
|            for (c = selmon->clients; c && !ISVISIBLE(c); c = c->next);
 | |
|        if (c) {
 | |
|            focus(c);
 | |
|            restack(selmon);
 | |
|        }
 | |
|    }
 | |
| }
 | |
| 
 |