Oops, here goes the patch ;)
diff -r 0be0474bce7a cmd/wm/client.c
--- a/cmd/wm/client.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/client.c	Sun Jul 30 16:53:21 2006 +0200
@@ -81,6 +81,7 @@ update_client_name(Client *c)
 		if(ch.res_name)
 			XFree(ch.res_name);
 	}
+	write_event("ClientName %d\n", idx_of_client(c));
 }
 
 Client *
@@ -89,7 +90,7 @@ create_client(Window w, XWindowAttribute
 	Client **t, *c = (Client *) cext_emallocz(sizeof(Client));
 	XSetWindowAttributes fwa;
 	long msize;
-	unsigned int i;
+	unsigned int i, barh;
 	static unsigned int id = 1;
 
 	c->id = id++;
@@ -118,9 +119,10 @@ create_client(Window w, XWindowAttribute
 		SubstructureRedirectMask | SubstructureNotifyMask | ExposureMask
 		| ButtonPressMask | PointerMotionMask | ButtonReleaseMask | KeyPressMask;
 
+	barh = def.framebars ? blitz_labelh(&def.font) : 0;
 	c->framewin = XCreateWindow(blz.dpy, blz.root, c->rect.x, c->rect.y,
 			c->rect.width + 2 * def.border,
-			c->rect.height + def.border + blitz_labelh(&def.font), 0,
+			c->rect.height + def.border + barh, 0,
 			DefaultDepth(blz.dpy, blz.screen), CopyFromParent,
 			DefaultVisual(blz.dpy, blz.screen),
 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &fwa);
@@ -312,12 +314,13 @@ gravitate_client(Client *c, Bool invert)
 	case NorthWestGravity:
 	case NorthGravity:
 	case NorthEastGravity:
-		dy = blitz_labelh(&def.font);
+		if(def.framebars)
+			dy = blitz_labelh(&def.font);
 		break;
 	case EastGravity:
 	case CenterGravity:
 	case WestGravity:
-		dy = -(c->rect.height / 2) + blitz_labelh(&def.font);
+		dy = -(c->rect.height / 2) + def.framebars ? blitz_labelh(&def.font) : 0;
 		break;
 	case SouthEastGravity:
 	case SouthGravity:
@@ -436,7 +439,11 @@ match_sizehints(Client *c, XRectangle *r
 {
 	XSizeHints *s = &c->size;
 	unsigned int dx = 2 * def.border;
-	unsigned int dy = def.border + blitz_labelh(&def.font);
+	unsigned int dy;
+	if(def.framebars)
+		dy = def.border + blitz_labelh(&def.font);
+	else
+		dy = 2 * def.border;
 	unsigned int hdiff, wdiff;
 
 	if(floating && (s->flags & PMinSize)) {
@@ -526,7 +533,10 @@ resize_client(Client *c, XRectangle *r, 
 			if((c->rect.width == screen->rect.width) &&
 			   (c->rect.height == screen->rect.height)) {
 				f->rect.x = -def.border;
-				f->rect.y = -blitz_labelh(&def.font);
+				if(def.framebars || (f->area->mode == Colstack && f->area->sel != f))
+					f->rect.y = -blitz_labelh(&def.font);
+				else
+					f->rect.y = -def.border;
 			}else{
 				if(f->rect.height > max_height)
 					f->rect.height = max_height;
@@ -551,10 +561,16 @@ resize_client(Client *c, XRectangle *r, 
 	}
 
 	c->rect.x = def.border;
-	c->rect.y = blitz_labelh(&def.font);
+	if(def.framebars || (f->area->mode == Colstack && f->area->sel != f))
+		c->rect.y = blitz_labelh(&def.font);
+	else
+		c->rect.y = def.border;
 	if((f->area->sel == f) || (f->area->mode != Colstack)) {
 		c->rect.width = f->rect.width - 2 * def.border;
-		c->rect.height = f->rect.height - def.border - blitz_labelh(&def.font);
+		if(def.framebars)
+			c->rect.height = f->rect.height - def.border - blitz_labelh(&def.font);
+		else
+			c->rect.height = f->rect.height - 2 * def.border;
 	}
 	if(!ignore_xcall) {
 		XMoveResizeWindow(blz.dpy, c->win, c->rect.x, c->rect.y,
diff -r 0be0474bce7a cmd/wm/event.c
--- a/cmd/wm/event.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/event.c	Sun Jul 30 16:53:21 2006 +0200
@@ -151,17 +151,19 @@ configurerequest(XEvent *e)
 				frect=&c->sel->revert;
 
 			if(c->rect.width >= screen->rect.width && c->rect.height >= screen->rect.height) {
-				frect->y = wc.y = -blitz_labelh(&def.font);
+				frect->y = wc.y = def.framebars ? -blitz_labelh(&def.font) : -def.border;
 				frect->x = wc.x = -def.border;
 			}
 			else {
-				frect->y = wc.y = c->rect.y - blitz_labelh(&def.font);
+				frect->y = wc.y = c->rect.y - def.framebars ? blitz_labelh(&def.font): def.border;
 				frect->x = wc.x = c->rect.x - def.border;
 			}
 			frect->width = wc.width = c->rect.width + 2 * def.border;
-			frect->height = wc.height = c->rect.height + def.border
-				+ blitz_labelh(&def.font);
-			wc.border_width = 1;
+			if(def.framebars)
+				frect->height = wc.height = c->rect.height + def.border
+					+ blitz_labelh(&def.font);
+			else
+				frect->height = wc.height = c->rect.height + 2 * def.border;
 			wc.sibling = None;
 			wc.stack_mode = ev->detail;
 			if(c->sel->area->view != screen->sel)
@@ -180,9 +182,15 @@ configurerequest(XEvent *e)
 
 	if(c && c->frame) {
 		wc.x = def.border;
-		wc.y = blitz_labelh(&def.font);
 		wc.width = c->sel->rect.width - 2 * def.border;
-		wc.height = c->sel->rect.height - def.border - blitz_labelh(&def.font);
+		if(def.framebars) {
+			wc.y = blitz_labelh(&def.font);
+			wc.height = c->sel->rect.height - def.border - blitz_labelh(&def.font);
+		}
+		else {
+			wc.y = def.border;
+			wc.height = c->sel->rect.height - 2 * def.border;
+		}
 	}
 
 	wc.border_width = 0;
@@ -245,8 +253,9 @@ expose(XEvent *e)
 	static Frame *f;
 
 	if(ev->count == 0) {
-		if(ev->window == screen->barwin)
+		if(ev->window == screen->barwin) {
 			draw_bar(screen);
+		}
 		else if((f = frame_of_win(ev->window)) && f->view == screen->sel)
 			draw_frame(f);
 	}
diff -r 0be0474bce7a cmd/wm/frame.c
--- a/cmd/wm/frame.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/frame.c	Sun Jul 30 16:53:21 2006 +0200
@@ -25,7 +25,10 @@ create_frame(Client *c, View *v)
 	else{
 		f->revert = f->rect = c->rect;
 		f->revert.width = f->rect.width += 2 * def.border;
-		f->revert.height = f->rect.height += def.border + blitz_labelh(&def.font);
+		if(def.framebars)
+			f->revert.height = f->rect.height += def.border + blitz_labelh(&def.font);
+		else
+			f->revert.height = f->rect.height += 2 * def.border;
 	}
 	f->collapsed = False;
 
@@ -101,29 +104,33 @@ void
 void
 draw_frame(Frame *f)
 {
-	if(def.border) {
-		f->tile.rect = f->rect;
-		f->tile.rect.x = f->tile.rect.y = 0;
+	f->tile.rect = f->rect;
+	f->tile.rect.x = f->tile.rect.y = 0;
+	if(def.border)
+		blitz_draw_tile(&f->tile);
+
+	if(def.framebars ||
+			(f->area->mode == Colstack && f->area->sel != f)) {
+		if (f->area->mode == Colstack)
+			printf("colstack\n");
+		f->grabbox.rect = f->tile.rect;
+		f->grabbox.rect.height = blitz_labelh(&def.font);
+		f->grabbox.rect.width = def.font.height;
+	
+		f->titlebar.rect = f->grabbox.rect;
+		f->titlebar.rect.x = f->grabbox.rect.x + f->grabbox.rect.width;
+		f->titlebar.rect.width = f->rect.width / 2;
+	
+		/* tag bar */
+		f->tagbar.rect = f->grabbox.rect;
+		f->tagbar.rect.x = f->titlebar.rect.x + f->titlebar.rect.width;
+		f->tagbar.rect.width =
+			f->rect.width - (f->grabbox.rect.width + f->titlebar.rect.width);
+		blitz_draw_tile(&f->grabbox);
+		blitz_draw_input(&f->tagbar);
+		blitz_draw_label(&f->titlebar, f->client->name);
 	}
 
-	f->grabbox.rect = f->tile.rect;
-	f->grabbox.rect.height = blitz_labelh(&def.font);
-	f->grabbox.rect.width = def.font.height;
-
-	f->titlebar.rect = f->grabbox.rect;
-	f->titlebar.rect.x = f->grabbox.rect.x + f->grabbox.rect.width;
-	f->titlebar.rect.width = f->rect.width / 2;
-
-	/* tag bar */
-	f->tagbar.rect = f->grabbox.rect;
-	f->tagbar.rect.x = f->titlebar.rect.x + f->titlebar.rect.width;
-	f->tagbar.rect.width =
-		f->rect.width - (f->grabbox.rect.width + f->titlebar.rect.width);
-
-	blitz_draw_tile(&f->tile);
-	blitz_draw_tile(&f->grabbox);
-	blitz_draw_input(&f->tagbar);
-	blitz_draw_label(&f->titlebar, f->client->name);
 	XCopyArea(blz.dpy, pmap, f->client->framewin, f->client->gc,
 			0, 0, f->rect.width, f->rect.height, 0, 0);
 	XSync(blz.dpy, False);
diff -r 0be0474bce7a cmd/wm/fs.c
--- a/cmd/wm/fs.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/fs.c	Sun Jul 30 16:53:21 2006 +0200
@@ -298,6 +298,13 @@ message_root(char *message)
 		def.mod = mod;
 		if(view)
 			restack_view(screen->sel);
+	}else if(!strncmp(message, "framebars ", 10)) {
+		message += 10;
+		if(*message == '0')
+			def.framebars = 0;
+		else
+			def.framebars = 1;
+		update_views();
 	}else
 		return Ebadcmd;
 
@@ -315,6 +322,7 @@ read_root_ctl()
 	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "font %s\n", def.font.fontstr);
 	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "grabmod %s\n", def.grabmod);
 	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "border %d\n", def.border);
+	i += snprintf(&buffer[i], (BUFFER_SIZE - i), "framebars %d\n", def.framebars);
 	return buffer;
 }
 
diff -r 0be0474bce7a cmd/wm/wm.c
--- a/cmd/wm/wm.c	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/wm.c	Sun Jul 30 16:53:21 2006 +0200
@@ -324,6 +324,7 @@ main(int argc, char *argv[])
 	def.keyssz = 0;
 	def.font.fontstr = cext_estrdup(BLITZ_FONT);
 	def.border = 2;
+	def.framebars = 1;
 	def.colmode = Coldefault;
 	cext_strlcpy(def.selcolor.colstr, BLITZ_SELCOLORS, sizeof(def.selcolor.colstr));
 	blitz_loadcolor(&blz, &def.selcolor);
diff -r 0be0474bce7a cmd/wm/wm.h
--- a/cmd/wm/wm.h	Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/wm.h	Sun Jul 30 16:53:21 2006 +0200
@@ -159,6 +159,7 @@ struct {
 	char grabmod[5];
 	unsigned long mod;
 	int colmode;
+	int framebars;
 } def;
 
 struct WMScreen {

Attachment: pgpTywSQR7HNq.pgp
Description: PGP signature

_______________________________________________
[email protected] mailing list
http://wmii.de/cgi-bin/mailman/listinfo/wmii

Reply via email to