fixed several other stuff, coming closer to something useful
This commit is contained in:
		
							parent
							
								
									83d23908d3
								
							
						
					
					
						commit
						896f08d7d5
					
				
							
								
								
									
										2
									
								
								bar.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								bar.c
									
									
									
									
									
								
							| @ -15,7 +15,7 @@ draw_bar() | |||||||
| 	if(stack) { | 	if(stack) { | ||||||
| 		brush.rect.width = textwidth(&brush.font, stack->name) + labelheight(&brush.font); | 		brush.rect.width = textwidth(&brush.font, stack->name) + labelheight(&brush.font); | ||||||
| 		swap((void **)&brush.fg, (void **)&brush.bg); | 		swap((void **)&brush.fg, (void **)&brush.bg); | ||||||
| 		draw(dpy, &brush, False, stack->name); | 		draw(dpy, &brush, True, stack->name); | ||||||
| 		swap((void **)&brush.fg, (void **)&brush.bg); | 		swap((void **)&brush.fg, (void **)&brush.bg); | ||||||
| 		brush.rect.x += brush.rect.width; | 		brush.rect.x += brush.rect.width; | ||||||
| 	} | 	} | ||||||
|  | |||||||
							
								
								
									
										29
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								client.c
									
									
									
									
									
								
							| @ -104,19 +104,21 @@ manage(Window w, XWindowAttributes *wa) | |||||||
| 
 | 
 | ||||||
| 	c = emallocz(sizeof(Client)); | 	c = emallocz(sizeof(Client)); | ||||||
| 	c->win = w; | 	c->win = w; | ||||||
| 	c->x = wa->x; | 	c->tx = c->x = wa->x; | ||||||
| 	c->y = wa->y; | 	c->ty = c->y = wa->y; | ||||||
| 	c->w = wa->width; | 	c->tw = c->w = wa->width; | ||||||
| 	c->h = wa->height; | 	c->h = wa->height; | ||||||
|  | 	c->th = barrect.height; | ||||||
| 	update_size(c); | 	update_size(c); | ||||||
| 	XSetWindowBorderWidth(dpy, c->win, 1); | 	XSetWindowBorderWidth(dpy, c->win, 1); | ||||||
|  | 	XSetWindowBorder(dpy, c->win, brush.border); | ||||||
| 	XSelectInput(dpy, c->win, CLIENT_MASK); | 	XSelectInput(dpy, c->win, CLIENT_MASK); | ||||||
| 	XGetTransientForHint(dpy, c->win, &c->trans); | 	XGetTransientForHint(dpy, c->win, &c->trans); | ||||||
| 	twa.override_redirect = 1; | 	twa.override_redirect = 1; | ||||||
| 	twa.background_pixmap = ParentRelative; | 	twa.background_pixmap = ParentRelative; | ||||||
| 	twa.event_mask = ExposureMask; | 	twa.event_mask = SubstructureNotifyMask | ExposureMask; | ||||||
| 
 | 
 | ||||||
| 	c->title = XCreateWindow(dpy, root, c->x, c->y, c->w, barrect.height, | 	c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th, | ||||||
| 			0, DefaultDepth(dpy, screen), CopyFromParent, | 			0, DefaultDepth(dpy, screen), CopyFromParent, | ||||||
| 			DefaultVisual(dpy, screen), | 			DefaultVisual(dpy, screen), | ||||||
| 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); | 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); | ||||||
| @ -145,7 +147,6 @@ resize(Client *c) | |||||||
| 	XConfigureEvent e; | 	XConfigureEvent e; | ||||||
| 
 | 
 | ||||||
| 	XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); | 	XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); | ||||||
| 	XMoveResizeWindow(dpy, c->title, c->x + c->w / 3, c->y, 2 * c->w / 3, barrect.height); |  | ||||||
| 	e.type = ConfigureNotify; | 	e.type = ConfigureNotify; | ||||||
| 	e.event = c->win; | 	e.event = c->win; | ||||||
| 	e.window = c->win; | 	e.window = c->win; | ||||||
| @ -177,7 +178,6 @@ unmanage(Client *c) | |||||||
| 	XSetErrorHandler(dummy_error_handler); | 	XSetErrorHandler(dummy_error_handler); | ||||||
| 
 | 
 | ||||||
| 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | ||||||
| 	XUnmapWindow(dpy, c->win); |  | ||||||
| 	XDestroyWindow(dpy, c->title); | 	XDestroyWindow(dpy, c->title); | ||||||
| 
 | 
 | ||||||
| 	for(l=&clients; *l && *l != c; l=&(*l)->next); | 	for(l=&clients; *l && *l != c; l=&(*l)->next); | ||||||
| @ -210,17 +210,20 @@ getclient(Window w) | |||||||
| void | void | ||||||
| draw_client(Client *c) | draw_client(Client *c) | ||||||
| { | { | ||||||
| 	if(!c) |  | ||||||
| 		return; |  | ||||||
| 	if(c == stack) | 	if(c == stack) | ||||||
| 		draw_bar(); | 		draw_bar(); | ||||||
| 
 | 
 | ||||||
|  | 	c->tw = textwidth(&brush.font, c->name) + labelheight(&brush.font); | ||||||
|  | 	c->tx = c->x + c->w - c->tw + 2; | ||||||
|  | 	c->ty = c->y; | ||||||
|  | 	XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th); | ||||||
|  | 
 | ||||||
| 	brush.rect.x = brush.rect.y = 0; | 	brush.rect.x = brush.rect.y = 0; | ||||||
| 	brush.rect.width = 2 * c->w / 3; | 	brush.rect.width = c->tw; | ||||||
| 	brush.rect.height = barrect.height; | 	brush.rect.height = c->th; | ||||||
| 
 | 
 | ||||||
| 	draw(dpy, &brush, True, c->name); | 	draw(dpy, &brush, True, c->name); | ||||||
| 	XCopyArea(dpy, brush.drawable, c->title, brush.gc, 0, 0, | 	XCopyArea(dpy, brush.drawable, c->title, brush.gc, | ||||||
| 			brush.rect.width, brush.rect.height, 0, 0); | 			0, 0, c->tw, c->th, 0, 0); | ||||||
| 	XFlush(dpy); | 	XFlush(dpy); | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								config.h
									
									
									
									
									
								
							| @ -6,5 +6,5 @@ | |||||||
| #define FONT		"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*" | #define FONT		"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*" | ||||||
| #define BGCOLOR		"#000000" | #define BGCOLOR		"#000000" | ||||||
| #define FGCOLOR		"#ffaa00" | #define FGCOLOR		"#ffaa00" | ||||||
| #define BORDERCOLOR	"#000000" | #define BORDERCOLOR	"#ee8800" | ||||||
| #define STATUSDELAY	10 /* milliseconds */ | #define STATUSDELAY	10 /* milliseconds */ | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								event.c
									
									
									
									
									
								
							| @ -204,6 +204,10 @@ propertynotify(XEvent *e) | |||||||
| 		} | 		} | ||||||
| 		if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) { | 		if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) { | ||||||
| 			update_name(c); | 			update_name(c); | ||||||
|  | 			if(c == stack) | ||||||
|  | 				draw_bar(); | ||||||
|  | 			else | ||||||
|  | 				draw_client(c); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								wm.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								wm.h
									
									
									
									
									
								
							| @ -25,6 +25,7 @@ struct Client { | |||||||
| 	char name[256], tag[256]; | 	char name[256], tag[256]; | ||||||
| 	int proto; | 	int proto; | ||||||
| 	int x, y, w, h; | 	int x, y, w, h; | ||||||
|  | 	int tx, ty, tw, th; | ||||||
| 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | ||||||
| 	long flags;  | 	long flags;  | ||||||
| 	Window win; | 	Window win; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe