added general centralization rule for new clients (works around various borken apps)
a20b10d0
2 file(s) · +14 −2
| 187 | 187 | void |
|
| 188 | 188 | manage(Window w, XWindowAttributes *wa) |
|
| 189 | 189 | { |
|
| 190 | - | Client *c; |
|
| 190 | + | Client *c, *tc; |
|
| 191 | 191 | Window trans; |
|
| 192 | 192 | XSetWindowAttributes twa; |
|
| 193 | 193 | ||
| 257 | 257 | || (c->maxw && c->minw && |
|
| 258 | 258 | c->maxw == c->minw && c->maxh == c->minh); |
|
| 259 | 259 | settitle(c); |
|
| 260 | + | ||
| 261 | + | if(trans && (tc = getclient(trans))) { |
|
| 262 | + | c->x = (tc->x + tc->w / 2) - (c->w / 2); |
|
| 263 | + | c->y = (tc->y + tc->h / 2) - (c->h / 2); |
|
| 264 | + | } |
|
| 265 | + | else { |
|
| 266 | + | c->x = (sw / 2) - (c->w / 2); |
|
| 267 | + | c->y = ((sh - bh) / 2) - (c->h / 2) + bh; |
|
| 268 | + | } |
|
| 260 | 269 | ||
| 261 | 270 | if(isvisible(c)) |
|
| 262 | 271 | sel = c; |
|
| 281 | 281 | togglemode(Arg *arg) |
|
| 282 | 282 | { |
|
| 283 | 283 | arrange = arrange == dofloat ? dotile : dofloat; |
|
| 284 | - | arrange(NULL); |
|
| 284 | + | if(sel) |
|
| 285 | + | arrange(NULL); |
|
| 286 | + | else |
|
| 287 | + | drawstatus(); |
|
| 285 | 288 | } |
|
| 286 | 289 | ||
| 287 | 290 | void |