Mercurial > dwm-meillo
comparison client.c @ 22:bd3a44353916
fixed several other stuff, coming closer to something useful
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Tue, 11 Jul 2006 23:46:39 +0200 |
parents | 3ef108a5ca0a |
children | 95ffdfd0a819 |
comparison
equal
deleted
inserted
replaced
21:3ef108a5ca0a | 22:bd3a44353916 |
---|---|
102 Client *c, **l; | 102 Client *c, **l; |
103 XSetWindowAttributes twa; | 103 XSetWindowAttributes twa; |
104 | 104 |
105 c = emallocz(sizeof(Client)); | 105 c = emallocz(sizeof(Client)); |
106 c->win = w; | 106 c->win = w; |
107 c->x = wa->x; | 107 c->tx = c->x = wa->x; |
108 c->y = wa->y; | 108 c->ty = c->y = wa->y; |
109 c->w = wa->width; | 109 c->tw = c->w = wa->width; |
110 c->h = wa->height; | 110 c->h = wa->height; |
111 c->th = barrect.height; | |
111 update_size(c); | 112 update_size(c); |
112 XSetWindowBorderWidth(dpy, c->win, 1); | 113 XSetWindowBorderWidth(dpy, c->win, 1); |
114 XSetWindowBorder(dpy, c->win, brush.border); | |
113 XSelectInput(dpy, c->win, CLIENT_MASK); | 115 XSelectInput(dpy, c->win, CLIENT_MASK); |
114 XGetTransientForHint(dpy, c->win, &c->trans); | 116 XGetTransientForHint(dpy, c->win, &c->trans); |
115 twa.override_redirect = 1; | 117 twa.override_redirect = 1; |
116 twa.background_pixmap = ParentRelative; | 118 twa.background_pixmap = ParentRelative; |
117 twa.event_mask = ExposureMask; | 119 twa.event_mask = SubstructureNotifyMask | ExposureMask; |
118 | 120 |
119 c->title = XCreateWindow(dpy, root, c->x, c->y, c->w, barrect.height, | 121 c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th, |
120 0, DefaultDepth(dpy, screen), CopyFromParent, | 122 0, DefaultDepth(dpy, screen), CopyFromParent, |
121 DefaultVisual(dpy, screen), | 123 DefaultVisual(dpy, screen), |
122 CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); | 124 CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); |
123 update_name(c); | 125 update_name(c); |
124 | 126 |
143 resize(Client *c) | 145 resize(Client *c) |
144 { | 146 { |
145 XConfigureEvent e; | 147 XConfigureEvent e; |
146 | 148 |
147 XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); | 149 XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); |
148 XMoveResizeWindow(dpy, c->title, c->x + c->w / 3, c->y, 2 * c->w / 3, barrect.height); | |
149 e.type = ConfigureNotify; | 150 e.type = ConfigureNotify; |
150 e.event = c->win; | 151 e.event = c->win; |
151 e.window = c->win; | 152 e.window = c->win; |
152 e.x = c->x; | 153 e.x = c->x; |
153 e.y = c->y; | 154 e.y = c->y; |
175 | 176 |
176 XGrabServer(dpy); | 177 XGrabServer(dpy); |
177 XSetErrorHandler(dummy_error_handler); | 178 XSetErrorHandler(dummy_error_handler); |
178 | 179 |
179 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | 180 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
180 XUnmapWindow(dpy, c->win); | |
181 XDestroyWindow(dpy, c->title); | 181 XDestroyWindow(dpy, c->title); |
182 | 182 |
183 for(l=&clients; *l && *l != c; l=&(*l)->next); | 183 for(l=&clients; *l && *l != c; l=&(*l)->next); |
184 eassert(*l == c); | 184 eassert(*l == c); |
185 *l = c->next; | 185 *l = c->next; |
208 } | 208 } |
209 | 209 |
210 void | 210 void |
211 draw_client(Client *c) | 211 draw_client(Client *c) |
212 { | 212 { |
213 if(!c) | |
214 return; | |
215 if(c == stack) | 213 if(c == stack) |
216 draw_bar(); | 214 draw_bar(); |
217 | 215 |
216 c->tw = textwidth(&brush.font, c->name) + labelheight(&brush.font); | |
217 c->tx = c->x + c->w - c->tw + 2; | |
218 c->ty = c->y; | |
219 XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th); | |
220 | |
218 brush.rect.x = brush.rect.y = 0; | 221 brush.rect.x = brush.rect.y = 0; |
219 brush.rect.width = 2 * c->w / 3; | 222 brush.rect.width = c->tw; |
220 brush.rect.height = barrect.height; | 223 brush.rect.height = c->th; |
221 | 224 |
222 draw(dpy, &brush, True, c->name); | 225 draw(dpy, &brush, True, c->name); |
223 XCopyArea(dpy, brush.drawable, c->title, brush.gc, 0, 0, | 226 XCopyArea(dpy, brush.drawable, c->title, brush.gc, |
224 brush.rect.width, brush.rect.height, 0, 0); | 227 0, 0, c->tw, c->th, 0, 0); |
225 XFlush(dpy); | 228 XFlush(dpy); |
226 } | 229 } |