view.c
changeset 762 140bcd4782d8
parent 761 4e835c2a7a12
child 763 718f8d6f6f56
equal deleted inserted replaced
761:4e835c2a7a12 762:140bcd4782d8
    18 		
    18 		
    19 	if(c->isfixed)
    19 	if(c->isfixed)
    20 		return;
    20 		return;
    21 
    21 
    22 	if((c->ismax = !c->ismax)) {
    22 	if((c->ismax = !c->ismax)) {
    23 		c->rx = c->x; c->x = wax;
    23 		c->rx = c->x;
    24 		c->ry = c->y; c->y = way;
    24 		c->ry = c->y;
    25 		c->rw = c->w; c->w = waw - 2 * BORDERPX;
    25 		c->rw = c->w;
    26 		c->rh = c->h; c->h = wah - 2 * BORDERPX;
    26 		c->rh = c->h;
    27 	}
    27 		resize(c, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, True);
    28 	else {
    28 	}
    29 		c->x = c->rx;
    29 	else
    30 		c->y = c->ry;
    30 		resize(c, c->rx, c->ry, c->rw, c->rh, True);
    31 		c->w = c->rw;
       
    32 		c->h = c->rh;
       
    33 	}
       
    34 	resize(c, True);
       
    35 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
    31 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
    36 }
    32 }
    37 
    33 
    38 /* extern */
    34 /* extern */
    39 
    35 
    54 dofloat(void) {
    50 dofloat(void) {
    55 	Client *c;
    51 	Client *c;
    56 
    52 
    57 	for(c = clients; c; c = c->next) {
    53 	for(c = clients; c; c = c->next) {
    58 		if(isvisible(c)) {
    54 		if(isvisible(c)) {
       
    55 			if(c->isbanned)
       
    56 				XMoveWindow(dpy, c->win, c->x, c->y);
    59 			c->isbanned = False;
    57 			c->isbanned = False;
    60 			resize(c, True);
    58 		}
    61 		}
    59 		else {
    62 		else
    60 			c->isbanned = True;
    63 			ban(c);
    61 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
       
    62 		}
    64 	}
    63 	}
    65 	if(!sel || !isvisible(sel)) {
    64 	if(!sel || !isvisible(sel)) {
    66 		for(c = stack; c && !isvisible(c); c = c->snext);
    65 		for(c = stack; c && !isvisible(c); c = c->snext);
    67 		focus(c);
    66 		focus(c);
    68 	}
    67 	}
    69 	restack();
    68 	restack();
    70 }
    69 }
    71 
    70 
    72 void
    71 void
    73 dotile(void) {
    72 dotile(void) {
    74 	unsigned int i, n, mw, mh, tw, th;
    73 	unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th;
    75 	Client *c;
    74 	Client *c;
    76 
    75 
    77 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
    76 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
    78 		n++;
    77 		n++;
    79 	/* window geoms */
    78 	/* window geoms */
    82 	th = (n > nmaster) ? wah / (n - nmaster) : 0;
    81 	th = (n > nmaster) ? wah / (n - nmaster) : 0;
    83 	tw = waw - mw;
    82 	tw = waw - mw;
    84 
    83 
    85 	for(i = 0, c = clients; c; c = c->next)
    84 	for(i = 0, c = clients; c; c = c->next)
    86 		if(isvisible(c)) {
    85 		if(isvisible(c)) {
       
    86 			if(c->isbanned)
       
    87 				XMoveWindow(dpy, c->win, c->x, c->y);
    87 			c->isbanned = False;
    88 			c->isbanned = False;
    88 			if(c->isfloat) {
    89 			if(c->isfloat)
    89 				resize(c, True);
       
    90 				continue;
    90 				continue;
    91 			}
       
    92 			c->ismax = False;
    91 			c->ismax = False;
    93 			c->x = wax;
    92 			nx = wax;
    94 			c->y = way;
    93 			ny = way;
    95 			if(i < nmaster) {
    94 			if(i < nmaster) {
    96 				c->y += i * mh;
    95 				ny += i * mh;
    97 				c->w = mw - 2 * BORDERPX;
    96 				nw = mw - 2 * BORDERPX;
    98 				c->h = mh - 2 * BORDERPX;
    97 				nh = mh - 2 * BORDERPX;
    99 			}
    98 			}
   100 			else {  /* tile window */
    99 			else {  /* tile window */
   101 				c->x += mw;
   100 				nx += mw;
   102 				c->w = tw - 2 * BORDERPX;
   101 				nw = tw - 2 * BORDERPX;
   103 				if(th > 2 * BORDERPX) {
   102 				if(th > 2 * BORDERPX) {
   104 					c->y += (i - nmaster) * th;
   103 					ny += (i - nmaster) * th;
   105 					c->h = th - 2 * BORDERPX;
   104 					nh = th - 2 * BORDERPX;
   106 				}
   105 				}
   107 				else /* fallback if th <= 2 * BORDERPX */
   106 				else /* fallback if th <= 2 * BORDERPX */
   108 					c->h = wah - 2 * BORDERPX;
   107 					nh = wah - 2 * BORDERPX;
   109 			}
   108 			}
   110 			resize(c, False);
   109 			resize(c, nx, ny, nw, nh, False);
   111 			i++;
   110 			i++;
   112 		}
   111 		}
   113 		else
   112 		else {
   114 			ban(c);
   113 			c->isbanned = True;
       
   114 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
       
   115 		}
   115 	if(!sel || !isvisible(sel)) {
   116 	if(!sel || !isvisible(sel)) {
   116 		for(c = stack; c && !isvisible(c); c = c->snext);
   117 		for(c = stack; c && !isvisible(c); c = c->snext);
   117 		focus(c);
   118 		focus(c);
   118 	}
   119 	}
   119 	restack();
   120 	restack();