73 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| static Client * scratchpad_last_showed = NULL;
 | |
| 
 | |
| void
 | |
| scratchpad_hide()
 | |
| {
 | |
| 	if (selmon->sel) {
 | |
| 		selmon->sel->tags = SCRATCHPAD_MASK;
 | |
| 		selmon->sel->isfloating = 1;
 | |
| 		arrange(selmon);
 | |
| 		focus(NULL);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| _Bool
 | |
| scratchpad_last_showed_is_killed(void)
 | |
| {
 | |
| 	Client *c;
 | |
| 	for (c = selmon->clients; c && c != scratchpad_last_showed; c = c->next);
 | |
| 	return (c == NULL);
 | |
| }
 | |
| 
 | |
| void
 | |
| scratchpad_remove()
 | |
| {
 | |
| 	if (selmon->sel && scratchpad_last_showed != NULL && selmon->sel == scratchpad_last_showed)
 | |
| 		scratchpad_last_showed = NULL;
 | |
| }
 | |
| 
 | |
| void
 | |
| scratchpad_show()
 | |
| {
 | |
| 	if (scratchpad_last_showed == NULL || scratchpad_last_showed_is_killed()) {
 | |
| 		scratchpad_show_first();
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	if (scratchpad_last_showed->tags != SCRATCHPAD_MASK) {
 | |
| 		scratchpad_last_showed->tags = SCRATCHPAD_MASK;
 | |
| 		arrange(selmon);
 | |
| 		focus(NULL);
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	Client *c;
 | |
| 
 | |
| 	for (c = selmon->clients; c && c != scratchpad_last_showed; c = c->next);
 | |
| 	for (c = (c ? c->next : NULL); c && c->tags != SCRATCHPAD_MASK; c = c->next);
 | |
| 
 | |
| 	if (c)
 | |
| 		scratchpad_show_client(c);
 | |
| 	else
 | |
| 		scratchpad_show_first();
 | |
| }
 | |
| 
 | |
| void
 | |
| scratchpad_show_client(Client* c)
 | |
| {
 | |
| 	scratchpad_last_showed = c;
 | |
| 	c->tags = selmon->tagset[selmon->seltags];
 | |
| 	focus(c);
 | |
| 	arrange(selmon);
 | |
| }
 | |
| 
 | |
| void
 | |
| scratchpad_show_first(void)
 | |
| {
 | |
| 	Client *c;
 | |
| 	for (c = selmon->clients; c && c->tags != SCRATCHPAD_MASK; c = c->next);
 | |
| 	if (c)
 | |
| 		scratchpad_show_client(c);
 | |
| }
 | |
| 
 |