view.c
changeset 565 fe766305eed1
parent 561 b5435d3fb7b0
child 573 797e27162b43
equal deleted inserted replaced
564:a22a70174d44 565:fe766305eed1
    47 		
    47 		
    48 	if(c->isfixed)
    48 	if(c->isfixed)
    49 		return;
    49 		return;
    50 
    50 
    51 	if((c->ismax = !c->ismax)) {
    51 	if((c->ismax = !c->ismax)) {
    52 		c->rx = c->x; c->x = sx;
    52 		c->rx = c->x; c->x = wax;
    53 		c->ry = c->y; c->y = bh;
    53 		c->ry = c->y; c->y = way;
    54 		c->rw = c->w; c->w = sw - 2 * BORDERPX;
    54 		c->rw = c->w; c->w = waw - 2 * BORDERPX;
    55 		c->rh = c->h; c->h = sh - bh - 2 * BORDERPX;
    55 		c->rh = c->h; c->h = wah - 2 * BORDERPX;
    56 	}
    56 	}
    57 	else {
    57 	else {
    58 		c->x = c->rx;
    58 		c->x = c->rx;
    59 		c->y = c->ry;
    59 		c->y = c->ry;
    60 		c->w = c->rw;
    60 		c->w = c->rw;
    97 	restack();
    97 	restack();
    98 }
    98 }
    99 
    99 
   100 void
   100 void
   101 dotile(void) {
   101 dotile(void) {
   102 	unsigned int i, n, mpx, stackw, stackh, th;
   102 	unsigned int i, n, mpx, stackw, th;
   103 	Client *c;
   103 	Client *c;
   104 
   104 
   105 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
   105 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
   106 		n++;
   106 		n++;
   107 	mpx = (sw * master) / 1000;
   107 	mpx = (waw * master) / 1000;
   108 	stackw = sw - mpx;
   108 	stackw = waw - mpx;
   109 	stackh = sh - bh;
       
   110 	th = stackh;
       
   111 	if(n > 1)
       
   112 		th /= (n - 1);
       
   113 
   109 
   114 	for(i = 0, c = clients; c; c = c->next)
   110 	for(i = 0, c = clients; c; c = c->next)
   115 		if(isvisible(c)) {
   111 		if(isvisible(c)) {
   116 			if(c->isfloat) {
   112 			if(c->isfloat) {
   117 				resize(c, True, TopLeft);
   113 				resize(c, True, TopLeft);
   118 				continue;
   114 				continue;
   119 			}
   115 			}
   120 			c->ismax = False;
   116 			c->ismax = False;
   121 			c->x = sx;
   117 			c->x = wax;
   122 			c->y = sy + bh;
   118 			c->y = way;
   123 			if(n == 1) { /* only 1 window */
   119 			if(n == 1) { /* only 1 window */
   124 				c->w = sw - 2 * BORDERPX;
   120 				c->w = waw - 2 * BORDERPX;
   125 				c->h = sh - 2 * BORDERPX - bh;
   121 				c->h = wah - 2 * BORDERPX;
   126 			}
   122 			}
   127 			else if(i == 0) { /* master window */
   123 			else if(i == 0) { /* master window */
   128 				c->w = mpx - 2 * BORDERPX;
   124 				c->w = waw - stackw - 2 * BORDERPX;
   129 				c->h = sh - bh - 2 * BORDERPX;
   125 				c->h = wah - 2 * BORDERPX;
       
   126 				th = wah / (n - 1);
   130 			}
   127 			}
   131 			else {  /* tile window */
   128 			else {  /* tile window */
   132 				c->x += mpx;
   129 				c->x += mpx;
   133 				c->w = stackw - 2 * BORDERPX;
   130 				c->w = stackw - 2 * BORDERPX;
   134 				if(th > bh) {
   131 				if(th > bh) {
   135 					c->y = sy + (i - 1) * th + bh;
   132 					c->y = way + (i - 1) * th;
   136 					if(i + 1 == n)
   133 					c->h = th - 2 * BORDERPX;
   137 						c->h = sh - c->y - 2 * BORDERPX;
       
   138 					else
       
   139 						c->h = th - 2 * BORDERPX;
       
   140 				}
   134 				}
   141 				else /* fallback if th < bh */
   135 				else /* fallback if th < bh */
   142 					c->h = stackh - 2 * BORDERPX;
   136 					c->h = wah - 2 * BORDERPX;
   143 			}
   137 			}
   144 			resize(c, False, TopLeft);
   138 			resize(c, False, TopLeft);
   145 			i++;
   139 			i++;
   146 		}
   140 		}
   147 		else
   141 		else