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…
	
		Reference in New Issue