50 GrabModeAsync, GrabModeSync, None, None); |
50 GrabModeAsync, GrabModeSync, None, None); |
51 } |
51 } |
52 else |
52 else |
53 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, |
53 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, |
54 GrabModeAsync, GrabModeSync, None, None); |
54 GrabModeAsync, GrabModeSync, None, None); |
55 } |
|
56 |
|
57 static void |
|
58 resizetitle(Client *c) { |
|
59 c->tw = textw(c->name); |
|
60 if(c->tw > c->w) |
|
61 c->tw = c->w + 2; |
|
62 c->tx = c->x + c->w - c->tw + 2; |
|
63 c->ty = c->y; |
|
64 if(isvisible(c)) |
|
65 XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th); |
|
66 else |
|
67 XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, c->th); |
|
68 } |
55 } |
69 |
56 |
70 static int |
57 static int |
71 xerrordummy(Display *dsply, XErrorEvent *ee) { |
58 xerrordummy(Display *dsply, XErrorEvent *ee) { |
72 return 0; |
59 return 0; |
248 0, DefaultDepth(dpy, screen), CopyFromParent, |
235 0, DefaultDepth(dpy, screen), CopyFromParent, |
249 DefaultVisual(dpy, screen), |
236 DefaultVisual(dpy, screen), |
250 CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); |
237 CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); |
251 |
238 |
252 grabbuttons(c, False); |
239 grabbuttons(c, False); |
|
240 updatetitle(c); |
253 settags(c, getclient(trans)); |
241 settags(c, getclient(trans)); |
254 if(!c->isfloat) |
242 if(!c->isfloat) |
255 c->isfloat = trans |
243 c->isfloat = trans |
256 || (c->maxw && c->minw && |
244 || (c->maxw && c->minw && |
257 c->maxw == c->minw && c->maxh == c->minh); |
245 c->maxw == c->minw && c->maxh == c->minh); |
|
246 resizetitle(c); |
258 |
247 |
259 if(clients) |
248 if(clients) |
260 clients->prev = c; |
249 clients->prev = c; |
261 c->next = clients; |
250 c->next = clients; |
262 c->snext = stack; |
251 c->snext = stack; |
263 stack = clients = c; |
252 stack = clients = c; |
264 |
253 |
265 updatetitle(c); |
|
266 ban(c); |
254 ban(c); |
267 XMapWindow(dpy, c->win); |
255 XMapWindow(dpy, c->win); |
268 XMapWindow(dpy, c->twin); |
256 XMapWindow(dpy, c->twin); |
269 if(isvisible(c)) |
257 if(isvisible(c)) |
270 focus(c); |
258 focus(c); |
316 else |
304 else |
317 wc.border_width = 1; |
305 wc.border_width = 1; |
318 XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc); |
306 XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc); |
319 configure(c); |
307 configure(c); |
320 XSync(dpy, False); |
308 XSync(dpy, False); |
|
309 } |
|
310 |
|
311 void |
|
312 resizetitle(Client *c) { |
|
313 c->tw = textw(c->name); |
|
314 if(c->tw > c->w) |
|
315 c->tw = c->w + 2; |
|
316 c->tx = c->x + c->w - c->tw + 2; |
|
317 c->ty = c->y; |
|
318 if(isvisible(c)) |
|
319 XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th); |
|
320 else |
|
321 XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, c->th); |
321 } |
322 } |
322 |
323 |
323 void |
324 void |
324 updatesize(Client *c) { |
325 updatesize(Client *c) { |
325 long msize; |
326 long msize; |