Mercurial > dwm-meillo
comparison view.c @ 531:96563762b4ad
yet another small fix and simplification of dotile
author | Anselm R. Garbe <arg@10kloc.org> |
---|---|
date | Fri, 06 Oct 2006 11:37:12 +0200 |
parents | 451f19d48845 |
children | 651f2c868b31 |
comparison
equal
deleted
inserted
replaced
530:451f19d48845 | 531:96563762b4ad |
---|---|
93 focus(c); | 93 focus(c); |
94 } | 94 } |
95 restack(); | 95 restack(); |
96 } | 96 } |
97 | 97 |
98 /* This algorithm is based on a (M)aster area and a (S)tacking area. | |
99 * It supports following arrangements: | |
100 * SSMMM MMMMM MMMSS | |
101 * SSMMM SSSSS MMMSS | |
102 */ | |
103 void | 98 void |
104 dotile(Arg *arg) { | 99 dotile(Arg *arg) { |
105 unsigned int i, n, md, stackw, stackh, th; | 100 unsigned int i, n, mpx, stackw, stackh, th; |
106 Client *c; | 101 Client *c; |
107 | 102 |
108 for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) | 103 for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
109 n++; | 104 n++; |
110 | 105 |
111 md = (sw * master) / 1000; | 106 mpx = (sw * master) / 1000; |
112 stackw = sw - md; | 107 stackw = sw - mpx; |
113 stackh = sh - bh; | 108 stackh = sh - bh; |
114 | 109 |
115 th = stackh; | 110 th = stackh; |
116 if(n > 1) | 111 if(n > 1) |
117 th /= (n - 1); | 112 th /= (n - 1); |
118 | 113 |
119 for(i = 0, c = clients; c; c = c->next) { | 114 for(i = 0, c = clients; c; c = c->next, i++) |
120 if(isvisible(c)) { | 115 if(isvisible(c)) { |
121 if(c->isfloat) { | 116 if(c->isfloat) { |
122 resize(c, True, TopLeft); | 117 resize(c, True, TopLeft); |
123 continue; | 118 continue; |
124 } | 119 } |
128 if(n == 1) { /* only 1 window */ | 123 if(n == 1) { /* only 1 window */ |
129 c->w = sw - 2 * BORDERPX; | 124 c->w = sw - 2 * BORDERPX; |
130 c->h = sh - 2 * BORDERPX - bh; | 125 c->h = sh - 2 * BORDERPX - bh; |
131 } | 126 } |
132 else if(i == 0) { /* master window */ | 127 else if(i == 0) { /* master window */ |
133 c->w = md - 2 * BORDERPX; | 128 c->w = mpx - 2 * BORDERPX; |
134 c->h = sh - bh - 2 * BORDERPX; | 129 c->h = sh - bh - 2 * BORDERPX; |
135 } | 130 } |
136 else { /* tile window */ | 131 else { /* tile window */ |
137 c->x += md; | 132 c->x += mpx; |
133 c->w = stackw - 2 * BORDERPX; | |
138 if(th > bh) { | 134 if(th > bh) { |
139 c->y = sy + (i - 1) * th + bh; | 135 c->y = sy + (i - 1) * th + bh; |
140 if(i + 1 == n) | 136 if(i + 1 == n) |
141 c->h = sh - c->y - 2 * BORDERPX; | 137 c->h = sh - c->y - 2 * BORDERPX; |
142 c->w = stackw - 2 * BORDERPX; | 138 else |
143 c->h = th - 2 * BORDERPX; | 139 c->h = th - 2 * BORDERPX; |
144 } | 140 } |
145 else { /* fallback if th < bh */ | 141 else /* fallback if th < bh */ |
146 c->w = stackw - 2 * BORDERPX; | |
147 c->h = stackh - 2 * BORDERPX; | 142 c->h = stackh - 2 * BORDERPX; |
148 } | |
149 } | 143 } |
150 resize(c, False, TopLeft); | 144 resize(c, False, TopLeft); |
151 i++; | |
152 } | 145 } |
153 else | 146 else |
154 ban(c); | 147 ban(c); |
155 } | |
156 if(!sel || !isvisible(sel)) { | 148 if(!sel || !isvisible(sel)) { |
157 for(c = stack; c && !isvisible(c); c = c->snext); | 149 for(c = stack; c && !isvisible(c); c = c->snext); |
158 focus(c); | 150 focus(c); |
159 } | 151 } |
160 restack(); | 152 restack(); |