123 int i; |
123 int i; |
124 |
124 |
125 c->tw = 0; |
125 c->tw = 0; |
126 for(i = 0; i < TLast; i++) |
126 for(i = 0; i < TLast; i++) |
127 if(c->tags[i]) |
127 if(c->tags[i]) |
128 c->tw += textw(&dc.font, c->tags[i]) + dc.font.height; |
128 c->tw += textw(c->tags[i]) + dc.font.height; |
129 c->tw += textw(&dc.font, c->name) + dc.font.height; |
129 c->tw += textw(c->name) + dc.font.height; |
130 if(c->tw > c->w) |
130 if(c->tw > c->w) |
131 c->tw = c->w + 2; |
131 c->tw = c->w + 2; |
132 c->tx = c->x + c->w - c->tw + 2; |
132 c->tx = c->x + c->w - c->tw + 2; |
133 c->ty = c->y; |
133 c->ty = c->y; |
134 XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th); |
134 XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th); |
224 if(*l) |
224 if(*l) |
225 *l = c->snext; |
225 *l = c->snext; |
226 c->snext = stack; |
226 c->snext = stack; |
227 stack = c; |
227 stack = c; |
228 if(old && old != c) { |
228 if(old && old != c) { |
|
229 XSetWindowBorder(dpy, old->win, dc.bg); |
229 XMapWindow(dpy, old->title); |
230 XMapWindow(dpy, old->title); |
230 draw_client(old); |
231 draw_client(old); |
231 } |
232 } |
232 XUnmapWindow(dpy, c->title); |
233 XUnmapWindow(dpy, c->title); |
|
234 XSetWindowBorder(dpy, c->win, dc.fg); |
233 draw_client(c); |
235 draw_client(c); |
234 XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
236 XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
235 XFlush(dpy); |
237 XFlush(dpy); |
236 } |
238 } |
237 |
239 |
248 c->tw = c->w = wa->width; |
250 c->tw = c->w = wa->width; |
249 c->h = wa->height; |
251 c->h = wa->height; |
250 c->th = th; |
252 c->th = th; |
251 c->border = 1; |
253 c->border = 1; |
252 update_size(c); |
254 update_size(c); |
253 XSetWindowBorderWidth(dpy, c->win, 1); |
|
254 XSetWindowBorder(dpy, c->win, dc.border); |
|
255 XSelectInput(dpy, c->win, |
255 XSelectInput(dpy, c->win, |
256 StructureNotifyMask | PropertyChangeMask | EnterWindowMask); |
256 StructureNotifyMask | PropertyChangeMask | EnterWindowMask); |
257 XGetTransientForHint(dpy, c->win, &c->trans); |
257 XGetTransientForHint(dpy, c->win, &c->trans); |
258 twa.override_redirect = 1; |
258 twa.override_redirect = 1; |
259 twa.background_pixmap = ParentRelative; |
259 twa.background_pixmap = ParentRelative; |
267 |
267 |
268 update_name(c); |
268 update_name(c); |
269 for(l=&clients; *l; l=&(*l)->next); |
269 for(l=&clients; *l; l=&(*l)->next); |
270 c->next = *l; /* *l == nil */ |
270 c->next = *l; /* *l == nil */ |
271 *l = c; |
271 *l = c; |
|
272 XSetWindowBorderWidth(dpy, c->win, 1); |
272 XMapRaised(dpy, c->win); |
273 XMapRaised(dpy, c->win); |
273 XMapRaised(dpy, c->title); |
274 XMapRaised(dpy, c->title); |
274 XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask, |
275 XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask, |
275 GrabModeAsync, GrabModeSync, None, None); |
276 GrabModeAsync, GrabModeSync, None, None); |
276 XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, |
277 XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, |
433 |
434 |
434 dc.w = 0; |
435 dc.w = 0; |
435 for(i = 0; i < TLast; i++) { |
436 for(i = 0; i < TLast; i++) { |
436 if(c->tags[i]) { |
437 if(c->tags[i]) { |
437 dc.x += dc.w; |
438 dc.x += dc.w; |
438 dc.w = textw(&dc.font, c->tags[i]) + dc.font.height; |
439 dc.w = textw(c->tags[i]) + dc.font.height; |
439 draw(True, c->tags[i]); |
440 draw(True, c->tags[i]); |
440 } |
441 } |
441 } |
442 } |
442 dc.x += dc.w; |
443 dc.x += dc.w; |
443 dc.w = textw(&dc.font, c->name) + dc.font.height; |
444 dc.w = textw(c->name) + dc.font.height; |
444 draw(True, c->name); |
445 draw(True, c->name); |
445 XCopyArea(dpy, dc.drawable, c->title, dc.gc, |
446 XCopyArea(dpy, dc.drawable, c->title, dc.gc, |
446 0, 0, c->tw, c->th, 0, 0); |
447 0, 0, c->tw, c->th, 0, 0); |
447 XFlush(dpy); |
448 XFlush(dpy); |
448 } |
449 } |