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);