67 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
void
 | 
						|
hide(Client *c) {
 | 
						|
 | 
						|
	if (!c || HIDDEN(c))
 | 
						|
		return;
 | 
						|
 | 
						|
	Window w = c->win;
 | 
						|
	static XWindowAttributes ra, ca;
 | 
						|
 | 
						|
	// more or less taken directly from blackbox's hide() function
 | 
						|
	XGrabServer(dpy);
 | 
						|
	XGetWindowAttributes(dpy, root, &ra);
 | 
						|
	XGetWindowAttributes(dpy, w, &ca);
 | 
						|
	// prevent UnmapNotify events
 | 
						|
	XSelectInput(dpy, root, ra.your_event_mask & ~SubstructureNotifyMask);
 | 
						|
	XSelectInput(dpy, w, ca.your_event_mask & ~StructureNotifyMask);
 | 
						|
	XUnmapWindow(dpy, w);
 | 
						|
	setclientstate(c, IconicState);
 | 
						|
	XSelectInput(dpy, root, ra.your_event_mask);
 | 
						|
	XSelectInput(dpy, w, ca.your_event_mask);
 | 
						|
	XUngrabServer(dpy);
 | 
						|
 | 
						|
	focus(c->snext);
 | 
						|
	arrange(c->mon);
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
show(Client *c)
 | 
						|
{
 | 
						|
	if (!c || !HIDDEN(c))
 | 
						|
		return;
 | 
						|
 | 
						|
	XMapWindow(dpy, c->win);
 | 
						|
	setclientstate(c, NormalState);
 | 
						|
	arrange(c->mon);
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
togglewin(const Arg *arg)
 | 
						|
{
 | 
						|
	Client *c = (Client*)arg->v;
 | 
						|
	if (c == selmon->sel)
 | 
						|
		hide(c);
 | 
						|
	else {
 | 
						|
		if (HIDDEN(c))
 | 
						|
			show(c);
 | 
						|
		focus(c);
 | 
						|
		restack(selmon);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
showhideclient(const Arg *arg)
 | 
						|
{
 | 
						|
	Client *c = (Client*)arg->v;
 | 
						|
	if (!c)
 | 
						|
		c = selmon->sel;
 | 
						|
	if (!c)
 | 
						|
		return;
 | 
						|
 | 
						|
	if (HIDDEN(c)) {
 | 
						|
		show(c);
 | 
						|
		restack(selmon);
 | 
						|
	} else {
 | 
						|
		hide(c);
 | 
						|
	}
 | 
						|
} |