diff -r 71cf9456e6ec tabbed.c
--- a/tabbed.c	Sat Oct 13 06:57:32 2012 +0200
+++ b/tabbed.c	Sat Oct 13 16:55:03 2012 -0300
@@ -142,7 +142,7 @@
 	[MapRequest] = maprequest,
 	[PropertyNotify] = propertynotify,
 };
-static int bh, wx, wy, ww, wh;
+static int vbh, bh, wx, wy, ww, wh;
 static unsigned int numlockmask = 0;
 static Bool running = True, nextfocus, doinitspawn = True;
 static Display *dpy;
@@ -284,7 +284,7 @@
 void
 drawbar() {
 	unsigned long *col;
-	int n, width;
+	int n, width, nbh;
 	Client *c, *fc;
 	char *name = NULL;
 
@@ -293,10 +293,18 @@
 		dc.w = ww;
 		XFetchName(dpy, win, &name);
 		drawtext(name ? name : "", dc.norm);
-		XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, bh, 0, 0);
+		XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, vbh, 0, 0);
 		XSync(dpy, False);
 		return;
 	}
+	nbh = clients->next ? vbh : 0;
+	if (nbh != bh) {
+		bh = nbh;
+		for (c = clients; c; c = c->next)
+			XMoveResizeWindow(dpy, c->win, 0, bh, ww, wh - bh);
+	}
+	if (bh == 0)
+		return;
 	width = ww;
 	for(c = clients; c; c = c->next)
 		c->tabx = -1;
@@ -738,7 +746,7 @@
 	screen = DefaultScreen(dpy);
 	root = RootWindow(dpy, screen);
 	initfont(font);
-	bh = dc.h = dc.font.height + 2;
+	vbh = dc.h = dc.font.height + 2;
 
 	/* init atoms */
 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
