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(); |