view.c
changeset 522 fd1275f3b205
parent 521 73afe7587bea
child 523 c1dd19da63ef
equal deleted inserted replaced
521:73afe7587bea 522:fd1275f3b205
     1 /*
     1 /*
     2  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
     2  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
     3  * See LICENSE file for license details.
     3  * See LICENSE file for license details.
     4  */
     4  */
     5 #include "dwm.h"
     5 #include "dwm.h"
       
     6 
       
     7 #define MINDIM			100
     6 
     8 
     7 /* static */
     9 /* static */
     8 
    10 
     9 static Client *
    11 static Client *
    10 minclient(void) {
    12 minclient(void) {
   136 				c->y = sy + bh;
   138 				c->y = sy + bh;
   137 				c->w = sw - 2 * BORDERPX;
   139 				c->w = sw - 2 * BORDERPX;
   138 				c->h = sh - 2 * BORDERPX - bh;
   140 				c->h = sh - 2 * BORDERPX - bh;
   139 			}
   141 			}
   140 			else if(i == 0) { /* master window */
   142 			else if(i == 0) { /* master window */
       
   143 				c->x = sx;
       
   144 				if(stackpos == StackLeft)
       
   145 					c->x += stackw;
       
   146 				c->y = sy + bh;
   141 				switch(stackpos) {
   147 				switch(stackpos) {
   142 				case StackLeft:
   148 				case StackLeft:
   143 					c->x = sx + stackw;
   149 				case StackRight:
   144 					c->y = sy + bh;
       
   145 					c->w = master - 2 * BORDERPX;
   150 					c->w = master - 2 * BORDERPX;
   146 					c->h = sh - bh - 2 * BORDERPX;
   151 					c->h = sh - bh - 2 * BORDERPX;
   147 					break;
   152 					break;
   148 				case StackBottom:
   153 				case StackBottom:
   149 					c->x = sx;
       
   150 					c->y = sy + bh;
       
   151 					c->w = sw - 2 * BORDERPX;
   154 					c->w = sw - 2 * BORDERPX;
   152 					c->h = master - 2 * BORDERPX;
   155 					c->h = master - 2 * BORDERPX;
   153 					break;
   156 					break;
   154 				case StackRight:
       
   155 					c->x = sx;
       
   156 					c->y = sy + bh;
       
   157 					c->w = master - 2 * BORDERPX;
       
   158 					c->h = sh - bh - 2 * BORDERPX;
       
   159 					break;
       
   160 				}
   157 				}
   161 			}
   158 			}
   162 			else if(th > bh) {
   159 			else if(th > bh) { /* tile window */
   163 				/* tile window */
   160 				c->x = sx;
       
   161 				if(stackpos == StackRight)
       
   162 					c->x += master;
   164 				c->w = tw - 2 * BORDERPX;
   163 				c->w = tw - 2 * BORDERPX;
   165 				c->h = th - 2 * BORDERPX;
   164 				c->h = th - 2 * BORDERPX;
   166 				switch(stackpos) {
   165 				switch(stackpos) {
   167 				case StackLeft:
   166 				case StackLeft:
   168 					c->x = sx;
   167 				case StackRight:
   169 					c->y = sy + (i - 1) * th + bh;
   168 					c->y = sy + (i - 1) * th + bh;
   170 					if(i + 1 == n)
   169 					if(i + 1 == n)
   171 						c->h = sh - c->y - 2 * BORDERPX;
   170 						c->h = sh - c->y - 2 * BORDERPX;
   172 					break;
   171 					break;
   173 				case StackBottom:
   172 				case StackBottom:
   174 					c->x = sx;
       
   175 					c->y = sy + master + (i - 1) * th + bh;
   173 					c->y = sy + master + (i - 1) * th + bh;
   176 					if(i + 1 == n)
   174 					if(i + 1 == n)
   177 						c->h = sh - c->y - 2 * BORDERPX;
   175 						c->h = sh - c->y - 2 * BORDERPX;
   178 					break;
   176 					break;
   179 				case StackRight:
       
   180 					c->x = sx + master;
       
   181 					c->y = sy + (i - 1) * th + bh;
       
   182 					if(i + 1 == n)
       
   183 						c->h = sh - c->y - 2 * BORDERPX;
       
   184 					break;
       
   185 				}
   177 				}
   186 			}
   178 			}
   187 			else { /* fallback if th < bh */
   179 			else { /* fallback if th < bh */
       
   180 				c->x = sx;
       
   181 				if(stackpos == StackRight)
       
   182 					c->x += master;
       
   183 				c->y = sy + bh;
       
   184 				if(stackpos == StackBottom)
       
   185 					c->y += master;
   188 				c->w = stackw - 2 * BORDERPX;
   186 				c->w = stackw - 2 * BORDERPX;
   189 				c->h = stackh - 2 * BORDERPX;
   187 				c->h = stackh - 2 * BORDERPX;
   190 				switch(stackpos) {
       
   191 				case StackLeft:
       
   192 					c->x = sx;
       
   193 					c->y = sy + bh;
       
   194 					break;
       
   195 				case StackBottom:
       
   196 					c->x = sx;
       
   197 					c->y = sy + master + bh;
       
   198 					break;
       
   199 				case StackRight:
       
   200 					c->x = sx + master;
       
   201 					c->y = sy + bh;
       
   202 					break;
       
   203 				}
       
   204 			}
   188 			}
   205 			resize(c, False, TopLeft);
   189 			resize(c, False, TopLeft);
   206 			i++;
   190 			i++;
   207 		}
   191 		}
   208 		else
   192 		else
   269 	if(!sel || sel->isfloat || n < 2 || (arrange == dofloat))
   253 	if(!sel || sel->isfloat || n < 2 || (arrange == dofloat))
   270 		return;
   254 		return;
   271 
   255 
   272 	s = stackpos == StackBottom ? sh - bh : sw;
   256 	s = stackpos == StackBottom ? sh - bh : sw;
   273 	if(sel == getnext(clients)) {
   257 	if(sel == getnext(clients)) {
   274 		if(master + arg->i > s - MINW || master + arg->i < MINW)
   258 		if(master + arg->i > s - MINDIM || master + arg->i < MINDIM)
   275 			return;
   259 			return;
   276 		master += arg->i;
   260 		master += arg->i;
   277 	}
   261 	}
   278 	else {
   262 	else {
   279 		if(master - arg->i > s - MINW || master - arg->i < MINW)
   263 		if(master - arg->i > s - MINDIM || master - arg->i < MINDIM)
   280 			return;
   264 			return;
   281 		master -= arg->i;
   265 		master -= arg->i;
   282 	}
   266 	}
   283 	arrange(NULL);
   267 	arrange(NULL);
   284 }
   268 }