|  | @@ -1,6 +1,5 @@
 | 
	
		
			
				|  |  |  /* See LICENSE file for copyright and license details. */
 | 
	
		
			
				|  |  |  #include "dwm.h"
 | 
	
		
			
				|  |  | -#include <stdio.h>
 | 
	
		
			
				|  |  |  #include <stdlib.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  unsigned int blw = 0;
 | 
	
	
		
			
				|  | @@ -14,24 +13,6 @@ LAYOUTS
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* extern */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void
 | 
	
		
			
				|  |  | -floating(const char *arg) {
 | 
	
		
			
				|  |  | -	Client *c;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	if(lt->arrange != floating)
 | 
	
		
			
				|  |  | -		return;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	for(c = clients; c; c = c->next)
 | 
	
		
			
				|  |  | -		if(isvisible(c)) {
 | 
	
		
			
				|  |  | -			unban(c);
 | 
	
		
			
				|  |  | -			resize(c, c->x, c->y, c->w, c->h, True);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		else
 | 
	
		
			
				|  |  | -			ban(c);
 | 
	
		
			
				|  |  | -	focus(NULL);
 | 
	
		
			
				|  |  | -	restack();
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  void
 | 
	
		
			
				|  |  |  focusclient(const char *arg) {
 | 
	
		
			
				|  |  |  	Client *c;
 | 
	
	
		
			
				|  | @@ -120,70 +101,11 @@ setlayout(const char *arg) {
 | 
	
		
			
				|  |  |  		lt = &layout[i];
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	if(sel)
 | 
	
		
			
				|  |  | -		lt->arrange(NULL);
 | 
	
		
			
				|  |  | +		lt->arrange();
 | 
	
		
			
				|  |  |  	else
 | 
	
		
			
				|  |  |  		drawstatus();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void
 | 
	
		
			
				|  |  | -tile(const char *arg) {
 | 
	
		
			
				|  |  | -	static double master = MASTER;
 | 
	
		
			
				|  |  | -	double delta;
 | 
	
		
			
				|  |  | -	unsigned int i, n, nx, ny, nw, nh, mw, th;
 | 
	
		
			
				|  |  | -	Client *c;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	if(lt->arrange != tile)
 | 
	
		
			
				|  |  | -		return;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	/* arg handling, manipulate master */
 | 
	
		
			
				|  |  | -	if(arg && (1 == sscanf(arg, "%lf", &delta))) {
 | 
	
		
			
				|  |  | -		if(delta + master > 0.1 && delta + master < 0.9)
 | 
	
		
			
				|  |  | -			master += delta;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
 | 
	
		
			
				|  |  | -		n++;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	/* window geoms */
 | 
	
		
			
				|  |  | -	mw = (n == 1) ? waw : master * waw;
 | 
	
		
			
				|  |  | -	th = (n > 1) ? wah / (n - 1) : 0;
 | 
	
		
			
				|  |  | -	if(n > 1 && th < bh)
 | 
	
		
			
				|  |  | -		th = wah;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	nx = wax;
 | 
	
		
			
				|  |  | -	ny = way;
 | 
	
		
			
				|  |  | -	for(i = 0, c = clients; c; c = c->next)
 | 
	
		
			
				|  |  | -		if(isvisible(c)) {
 | 
	
		
			
				|  |  | -			unban(c);
 | 
	
		
			
				|  |  | -			if(c->isfloating)
 | 
	
		
			
				|  |  | -				continue;
 | 
	
		
			
				|  |  | -			c->ismax = False;
 | 
	
		
			
				|  |  | -			if(i == 0) { /* master */
 | 
	
		
			
				|  |  | -				nw = mw - 2 * c->border;
 | 
	
		
			
				|  |  | -				nh = wah - 2 * c->border;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			else {  /* tile window */
 | 
	
		
			
				|  |  | -				if(i == 1) {
 | 
	
		
			
				|  |  | -					ny = way;
 | 
	
		
			
				|  |  | -					nx += mw;
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				nw = waw - mw - 2 * c->border;
 | 
	
		
			
				|  |  | -				if(i + 1 == n) /* remainder */
 | 
	
		
			
				|  |  | -					nh = (way + wah) - ny - 2 * c->border;
 | 
	
		
			
				|  |  | -				else
 | 
	
		
			
				|  |  | -					nh = th - 2 * c->border;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			resize(c, nx, ny, nw, nh, False);
 | 
	
		
			
				|  |  | -			if(n > 1 && th != wah)
 | 
	
		
			
				|  |  | -				ny += nh + 2 * c->border;
 | 
	
		
			
				|  |  | -			i++;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		else
 | 
	
		
			
				|  |  | -			ban(c);
 | 
	
		
			
				|  |  | -	focus(NULL);
 | 
	
		
			
				|  |  | -	restack();
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  void
 | 
	
		
			
				|  |  |  togglebar(const char *arg) {
 | 
	
		
			
				|  |  |  	if(bpos == BarOff)
 | 
	
	
		
			
				|  | @@ -191,39 +113,5 @@ togglebar(const char *arg) {
 | 
	
		
			
				|  |  |  	else
 | 
	
		
			
				|  |  |  		bpos = BarOff;
 | 
	
		
			
				|  |  |  	updatebarpos();
 | 
	
		
			
				|  |  | -	lt->arrange(NULL);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -void
 | 
	
		
			
				|  |  | -togglemax(const char *arg) {
 | 
	
		
			
				|  |  | -	XEvent ev;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	if(!sel || (lt->arrange != floating && !sel->isfloating) || sel->isfixed)
 | 
	
		
			
				|  |  | -		return;
 | 
	
		
			
				|  |  | -	if((sel->ismax = !sel->ismax)) {
 | 
	
		
			
				|  |  | -		sel->rx = sel->x;
 | 
	
		
			
				|  |  | -		sel->ry = sel->y;
 | 
	
		
			
				|  |  | -		sel->rw = sel->w;
 | 
	
		
			
				|  |  | -		sel->rh = sel->h;
 | 
	
		
			
				|  |  | -		resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	else
 | 
	
		
			
				|  |  | -		resize(sel, sel->rx, sel->ry, sel->rw, sel->rh, True);
 | 
	
		
			
				|  |  | -	drawstatus();
 | 
	
		
			
				|  |  | -	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -void
 | 
	
		
			
				|  |  | -zoom(const char *arg) {
 | 
	
		
			
				|  |  | -	Client *c;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	if(!sel || lt->arrange == floating || sel->isfloating)
 | 
	
		
			
				|  |  | -		return;
 | 
	
		
			
				|  |  | -	if((c = sel) == nexttiled(clients))
 | 
	
		
			
				|  |  | -		if(!(c = nexttiled(c->next)))
 | 
	
		
			
				|  |  | -			return;
 | 
	
		
			
				|  |  | -	detach(c);
 | 
	
		
			
				|  |  | -	attach(c);
 | 
	
		
			
				|  |  | -	focus(c);
 | 
	
		
			
				|  |  | -	lt->arrange(NULL);
 | 
	
		
			
				|  |  | +	lt->arrange();
 | 
	
		
			
				|  |  |  }
 |