diff options
| author | Anselm R Garbe <anselm@garbe.us> | 2009-07-06 20:12:47 +0100 | 
|---|---|---|
| committer | Anselm R Garbe <anselm@garbe.us> | 2009-07-06 20:12:47 +0100 | 
| commit | a72dc2fec277bb517adcb98edfb18f469333d980 (patch) | |
| tree | c6de2b9f83d5e503e64f1ed9e40b729a04720531 | |
| parent | 8b17f5517b12a84a52e9073ace4c8bb9eb6bb941 (diff) | |
applied Mate's patch, added Mate to LICENSE
| -rw-r--r-- | LICENSE | 1 | ||||
| -rw-r--r-- | dwm.c | 40 | 
2 files changed, 21 insertions, 20 deletions
| @@ -10,6 +10,7 @@ MIT/X Consortium License  © 2007-2008 Peter Hartlich <sgkkr at hartlich dot com>  © 2008 Martin Hurton <martin dot hurton at gmail dot com>  © 2008 Neale Pickett <neale dot woozle dot org> +© 2009 Mate Nagy <mnagy@port70.net>  Permission is hereby granted, free of charge, to any person obtaining a  copy of this software and associated documentation files (the "Software"), @@ -136,6 +136,7 @@ struct Monitor {  	Client *stack;  	Monitor *next;  	Window barwin; +	Layout *lt[2];  };  typedef struct { @@ -261,7 +262,6 @@ static Bool running = True;  static Cursor cursor[CurLast];  static Display *dpy;  static DC dc; -static Layout *lt[] = { NULL, NULL };  static Monitor *mons = NULL, *selmon = NULL;  static Window root; @@ -376,8 +376,8 @@ arrange(void) {  		showhide(m->stack);  	focus(NULL);  	for(m = mons; m; m = m->next) { -		if(lt[m->sellt]->arrange) -			lt[m->sellt]->arrange(m); +		if(m->lt[m->sellt]->arrange) +			m->lt[m->sellt]->arrange(m);  		restack(m);  	}  } @@ -456,7 +456,7 @@ cleanup(void) {  	Monitor *m;  	view(&a); -	lt[selmon->sellt] = &foo; +	selmon->lt[selmon->sellt] = &foo;  	for(m = mons; m; m = m->next)  		while(m->stack)  			unmanage(m->stack); @@ -547,7 +547,7 @@ configurerequest(XEvent *e) {  	if((c = wintoclient(ev->window))) {  		if(ev->value_mask & CWBorderWidth)  			c->bw = ev->border_width; -		else if(c->isfloating || !lt[selmon->sellt]->arrange) { +		else if(c->isfloating || !selmon->lt[selmon->sellt]->arrange) {  			m = c->mon;  			if(ev->value_mask & CWX)  				c->x = m->mx + ev->x; @@ -668,7 +668,7 @@ drawbar(Monitor *m) {  	}  	if(blw > 0) {  		dc.w = blw; -		drawtext(lt[m->sellt]->symbol, dc.norm, False); +		drawtext(m->lt[m->sellt]->symbol, dc.norm, False);  		x = dc.x + dc.w;  	}  	else @@ -1170,11 +1170,11 @@ movemouse(const Arg *arg) {  					ny = selmon->wy;  				else if(abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap)  					ny = selmon->wy + selmon->wh - HEIGHT(c); -				if(!c->isfloating && lt[selmon->sellt]->arrange +				if(!c->isfloating && selmon->lt[selmon->sellt]->arrange  				                  && (abs(nx - c->x) > snap || abs(ny - c->y) > snap))  					togglefloating(NULL);  			} -			if(!lt[selmon->sellt]->arrange || c->isfloating) +			if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)  				resize(c, nx, ny, c->w, c->h, True);  			break;  		} @@ -1289,11 +1289,11 @@ resizemouse(const Arg *arg) {  			nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);  			if(snap && nw >= selmon->wx && nw <= selmon->wx + selmon->ww  			        && nh >= selmon->wy && nh <= selmon->wy + selmon->wh) { -				if(!c->isfloating && lt[selmon->sellt]->arrange +				if(!c->isfloating && selmon->lt[selmon->sellt]->arrange  				   && (abs(nw - c->w) > snap || abs(nh - c->h) > snap))  					togglefloating(NULL);  			} -			if(!lt[selmon->sellt]->arrange || c->isfloating) +			if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)  				resize(c, c->x, c->y, nw, nh, True);  			break;  		} @@ -1318,9 +1318,9 @@ restack(Monitor *m) {  	drawbars();  	if(!m->sel)  		return; -	if(m->sel->isfloating || !lt[m->sellt]->arrange) +	if(m->sel->isfloating || !m->lt[m->sellt]->arrange)  		XRaiseWindow(dpy, m->sel->win); -	if(lt[m->sellt]->arrange) { +	if(m->lt[m->sellt]->arrange) {  		wc.stack_mode = Below;  		wc.sibling = m->barwin;  		for(c = m->stack; c; c = c->snext) @@ -1396,10 +1396,10 @@ setclientstate(Client *c, long state) {  void  setlayout(const Arg *arg) { -	if(!arg || !arg->v || arg->v != lt[selmon->sellt]) +	if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])  		selmon->sellt ^= 1;  	if(arg && arg->v) -		lt[selmon->sellt] = (Layout *)arg->v; +		selmon->lt[selmon->sellt] = (Layout *)arg->v;  	if(selmon->sel)  		arrange();  	else @@ -1411,7 +1411,7 @@ void  setmfact(const Arg *arg) {  	float f; -	if(!arg || !lt[selmon->sellt]->arrange) +	if(!arg || !selmon->lt[selmon->sellt]->arrange)  		return;  	f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0;  	if(f < 0.1 || f > 0.9) @@ -1433,8 +1433,6 @@ setup(void) {  	sw = DisplayWidth(dpy, screen);  	sh = DisplayHeight(dpy, screen);  	bh = dc.h = dc.font.height + 2; -	lt[0] = &layouts[0]; -	lt[1] = &layouts[1 % LENGTH(layouts)];  	updategeom();  	/* init atoms */  	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); @@ -1484,7 +1482,7 @@ showhide(Client *c) {  		return;  	if(ISVISIBLE(c)) { /* show clients top down */  		XMoveWindow(dpy, c->win, c->x, c->y); -		if(!lt[c->mon->sellt]->arrange || c->isfloating) +		if(!c->mon->lt[c->mon->sellt]->arrange || c->isfloating)  			resize(c, c->x, c->y, c->w, c->h, False);  		showhide(c->snext);  	} @@ -1730,6 +1728,8 @@ updategeom(void) {  		m->mfact = mfact;  		m->showbar = SHOWBAR;  		m->topbar = TOPBAR; +		m->lt[0] = &layouts[0]; +		m->lt[1] = &layouts[1 % LENGTH(layouts)];  		updatebarpos(m);  	}  	/* reassign left over clients of disappeared monitors */ @@ -1916,8 +1916,8 @@ void  zoom(const Arg *arg) {  	Client *c = selmon->sel; -	if(!lt[selmon->sellt]->arrange -	|| lt[selmon->sellt]->arrange == monocle +	if(!selmon->lt[selmon->sellt]->arrange +	|| selmon->lt[selmon->sellt]->arrange == monocle  	|| (selmon->sel && selmon->sel->isfloating))  		return;  	if(c == nexttiled(selmon->clients)) | 
