prelim of dotile()
This commit is contained in:
		
							parent
							
								
									b427a2c6cb
								
							
						
					
					
						commit
						8fa47ac679
					
				
							
								
								
									
										1
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								dwm.h
									
									
									
									
									
								
							| @ -40,6 +40,7 @@ | |||||||
| #define MOUSEMASK		(BUTTONMASK | PointerMotionMask) | #define MOUSEMASK		(BUTTONMASK | PointerMotionMask) | ||||||
| /* other stuff used in different places */ | /* other stuff used in different places */ | ||||||
| #define BORDERPX		1 | #define BORDERPX		1 | ||||||
|  | #define MINW			100 | ||||||
| #define PROTODELWIN		1 | #define PROTODELWIN		1 | ||||||
| 
 | 
 | ||||||
| enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ | enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ | ||||||
|  | |||||||
							
								
								
									
										112
									
								
								view.c
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								view.c
									
									
									
									
									
								
							| @ -99,36 +99,39 @@ dofloat(Arg *arg) { | |||||||
| 
 | 
 | ||||||
| /* This algorithm is based on a (M)aster area and a (S)tacking area.
 | /* This algorithm is based on a (M)aster area and a (S)tacking area.
 | ||||||
|  * It supports following arrangements: |  * It supports following arrangements: | ||||||
|  * 	MMMS		MMMM		SMMM |  * 	SSMMM	MMMMM	MMMSS | ||||||
|  * 	MMMS		MMMM		SMMM |  * 	SSMMM	SSSSS	MMMSS | ||||||
|  * 	MMMS		SSSS		SMMM |  | ||||||
|  */ |  */ | ||||||
| void | void | ||||||
| dotile(Arg *arg) { | dotile(Arg *arg) { | ||||||
| 	int h, i, n, w; | 	int i, n, stackw, stackh, tw, th; | ||||||
| 	Client *c; | 	Client *c; | ||||||
| 
 | 
 | ||||||
| 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) | 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) | ||||||
| 		n++; | 		n++; | ||||||
| 
 | 
 | ||||||
| 	if(isvertical) { | 	if(stackpos == StackBottom) { | ||||||
| 		if(stackpos == StackBottom) { | 		stackw = sw; | ||||||
| 			w = sw; | 		stackh = sh - bh - master; | ||||||
| 			if(n > 1) | 	} | ||||||
| 				h = (sh - bh) / (n - 1); | 	else { | ||||||
| 			else | 		stackw = sw - master; | ||||||
| 				h = sh - bh; | 		stackh = sh - bh; | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			w = sw - master; |  | ||||||
| 			if(n > 1) |  | ||||||
| 				h = (sh - bh) / (n - 1); |  | ||||||
| 			else |  | ||||||
| 				h = sh - bh; |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| 	else { /* horizontal stack */ |  | ||||||
| 
 | 
 | ||||||
|  | 	if(isvertical) { | ||||||
|  | 		tw = stackw; | ||||||
|  | 		if(n > 1) | ||||||
|  | 			th = stackh / (n - 1); | ||||||
|  | 		else | ||||||
|  | 			th = stackh; | ||||||
|  | 	} | ||||||
|  | 	else { | ||||||
|  | 		th = stackh; | ||||||
|  | 		if(n > 1) | ||||||
|  | 			tw = stackw / (n - 1); | ||||||
|  | 		else | ||||||
|  | 			tw = stackw; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for(i = 0, c = clients; c; c = c->next) { | 	for(i = 0, c = clients; c; c = c->next) { | ||||||
| @ -138,32 +141,59 @@ dotile(Arg *arg) { | |||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			c->ismax = False; | 			c->ismax = False; | ||||||
| 			if(n == 1) { | 			if(n == 1) { /* only 1 window */ | ||||||
| 				c->x = sx; | 				c->x = sx; | ||||||
| 				c->y = sy + bh; | 				c->y = sy + bh; | ||||||
| 				c->w = sw - 2 * BORDERPX; | 				c->w = sw - 2 * BORDERPX; | ||||||
| 				c->h = sh - 2 * BORDERPX - bh; | 				c->h = sh - 2 * BORDERPX - bh; | ||||||
| 			} | 			} | ||||||
| 			else if(i == 0) { | 			else if(i == 0) { /* master window */ | ||||||
|  | 				c->x = sx; | ||||||
|  | 				if(stackpos == StackLeft) | ||||||
|  | 					c->x += master; | ||||||
|  | 				c->y = sy + bh; | ||||||
|  | 				if(isvertical) { | ||||||
|  | 					c->w = master - 2 * BORDERPX; | ||||||
|  | 					c->h = sh - 2 * BORDERPX - bh; | ||||||
|  | 				} | ||||||
|  | 				else { | ||||||
|  | 					c->w = sw; | ||||||
|  | 					c->h = master - 2 * BORDERPX; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			else if((isvertical && th > bh) || (!isvertical && tw > MINW)) { | ||||||
|  | 				/* tile window */ | ||||||
|  | 				c->x = sx; | ||||||
|  | 				if(isvertical) | ||||||
|  | 					c->y = sy + (i - 1) * th + bh; | ||||||
|  | 				else | ||||||
|  | 					c->y = sy + bh; | ||||||
|  | 				if(stackpos == StackRight) | ||||||
|  | 					c->x += master; | ||||||
|  | 				else if(stackpos == StackBottom) | ||||||
|  | 					c->y += master; | ||||||
|  | 				c->w = tw - 2 * BORDERPX; | ||||||
|  | 				c->h = th - 2 * BORDERPX; | ||||||
|  | 				if(i + 1 == n) { /* fixes for last tile to take up rest space */ | ||||||
|  | 					if(isvertical) | ||||||
|  | 						c->h = sh - c->y - 2 * BORDERPX; | ||||||
|  | 					else { | ||||||
|  | 						if(stackpos == StackLeft) | ||||||
|  | 							c->w = master - c->x - 2 * BORDERPX; | ||||||
|  | 						else | ||||||
|  | 							c->w = sw - c->x - 2 * BORDERPX; | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			else { /* fallback if th < bh resp. tw < MINW */ | ||||||
| 				c->x = sx; | 				c->x = sx; | ||||||
| 				c->y = sy + bh; | 				c->y = sy + bh; | ||||||
| 				c->w = master - 2 * BORDERPX; | 				if(stackpos == StackRight) | ||||||
| 				c->h = sh - 2 * BORDERPX - bh; | 					c->x += master; | ||||||
| 			} | 				else if(stackpos == StackBottom) | ||||||
| 			else if(h > bh) { | 					c->y += master; | ||||||
| 				c->x = sx + master; | 				c->w = stackw - 2 * BORDERPX; | ||||||
| 				c->y = sy + (i - 1) * h + bh; | 				c->h = stackh - 2 * BORDERPX; | ||||||
| 				c->w = w - 2 * BORDERPX; |  | ||||||
| 				if(i + 1 == n) |  | ||||||
| 					c->h = sh - c->y - 2 * BORDERPX; |  | ||||||
| 				else |  | ||||||
| 					c->h = h - 2 * BORDERPX; |  | ||||||
| 			} |  | ||||||
| 			else { /* fallback if h < bh */ |  | ||||||
| 				c->x = sx + master; |  | ||||||
| 				c->y = sy + bh; |  | ||||||
| 				c->w = w - 2 * BORDERPX; |  | ||||||
| 				c->h = sh - 2 * BORDERPX - bh; |  | ||||||
| 			} | 			} | ||||||
| 			resize(c, False, TopLeft); | 			resize(c, False, TopLeft); | ||||||
| 			i++; | 			i++; | ||||||
| @ -232,12 +262,12 @@ resizecol(Arg *arg) { | |||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	if(sel == getnext(clients)) { | 	if(sel == getnext(clients)) { | ||||||
| 		if(master + arg->i > sw - 100 || master + arg->i < 100) | 		if(master + arg->i > sw - MINW || master + arg->i < MINW) | ||||||
| 			return; | 			return; | ||||||
| 		master += arg->i; | 		master += arg->i; | ||||||
| 	} | 	} | ||||||
| 	else { | 	else { | ||||||
| 		if(master - arg->i > sw - 100 || master - arg->i < 100) | 		if(master - arg->i > sw - MINW || master - arg->i < MINW) | ||||||
| 			return; | 			return; | ||||||
| 		master -= arg->i; | 		master -= arg->i; | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user