Patch tabbed

This commit is contained in:
2024-06-08 14:23:22 +01:00
parent 957a94a10f
commit d26494cfe4
3 changed files with 67 additions and 4 deletions

View File

@@ -0,0 +1,54 @@
diff --git a/tabbed.c b/tabbed.c
index eafe28a..b0b9662 100644
--- a/tabbed.c
+++ b/tabbed.c
@@ -152,7 +152,7 @@ static void (*handler[LASTEvent]) (const XEvent *) = {
[MapRequest] = maprequest,
[PropertyNotify] = propertynotify,
};
-static int bh, obh, wx, wy, ww, wh;
+static int bh, obh, wx, wy, ww, wh, vbh;
static unsigned int numlockmask;
static Bool running = True, nextfocus, doinitspawn = True,
fillagain = False, closelastclient = False,
@@ -324,7 +324,7 @@ void
drawbar(void)
{
XftColor *col;
- int c, cc, fc, width;
+ int c, cc, fc, width, nbh, i;
char *name = NULL;
if (nclients == 0) {
@@ -332,12 +332,21 @@ drawbar(void)
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 = nclients > 1 ? vbh : 0;
+ if (bh != nbh) {
+ bh = nbh;
+ for (i = 0; i < nclients; i++)
+ XMoveResizeWindow(dpy, clients[i]->win, 0, bh, ww, wh - bh);
+ }
+ if (bh == 0)
+ return;
+
width = ww;
cc = ww / tabwidth;
if (nclients > cc)
@@ -984,7 +993,7 @@ setup(void)
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[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);

Binary file not shown.

View File

@@ -152,7 +152,7 @@ static void (*handler[LASTEvent]) (const XEvent *) = {
[MapRequest] = maprequest,
[PropertyNotify] = propertynotify,
};
static int bh, obh, wx, wy, ww, wh;
static int bh, obh, wx, wy, ww, wh, vbh;
static unsigned int numlockmask;
static Bool running = True, nextfocus, doinitspawn = True,
fillagain = False, closelastclient = False,
@@ -324,7 +324,7 @@ void
drawbar(void)
{
XftColor *col;
int c, cc, fc, width;
int c, cc, fc, width, nbh, i;
char *name = NULL;
if (nclients == 0) {
@@ -332,12 +332,21 @@ drawbar(void)
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 = nclients > 1 ? vbh : 0;
if (bh != nbh) {
bh = nbh;
for (i = 0; i < nclients; i++)
XMoveResizeWindow(dpy, clients[i]->win, 0, bh, ww, wh - bh);
}
if (bh == 0)
return;
width = ww;
cc = ww / tabwidth;
if (nclients > cc)
@@ -991,7 +1000,7 @@ setup(void)
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[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);