Remove blw variable in favour of calculating the value when needed - dwm - dyna… | |
git clone git://git.suckless.org/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 5799dd1fca6576b662d299e210cd5933b29d502d | |
parent 44adafe0069e73aa03a3829d7bb39591cd8b3f1d | |
Author: Stein <[email protected]> | |
Date: Mon, 15 Aug 2022 14:31:22 +0200 | |
Remove blw variable in favour of calculating the value when needed | |
The purpose and reasoning behind the bar layout width (blw) variable | |
in dwm the way it is today may not be immediately obvious. | |
The use of the variable makes more sense when looking at commit | |
2ce37bc from 2009 where blw was initialised in the setup function | |
and it represented the maximum of all available layout symbols. | |
for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { | |
w = TEXTW(layouts[i].symbol); | |
blw = MAX(blw, w); | |
} | |
As such the layout symbol back then was fixed in size and both drawbar | |
and buttonpress depended on this variable. | |
The the way the blw variable is set today in drawbar means that it | |
merely caches the size of the layout symbol for the last bar drawn. | |
While unlikely to happen in practice it is possible that the last bar | |
drawn is not that of the currently selected monitor, which can result | |
in misaligned button clicks if there is a difference in layout symbol | |
width between monitors. | |
Diffstat: | |
M dwm.c | 6 +++--- | |
1 file changed, 3 insertions(+), 3 deletions(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
@@ -240,7 +240,7 @@ static const char broken[] = "broken"; | |
static char stext[256]; | |
static int screen; | |
static int sw, sh; /* X display screen geometry width, height */ | |
-static int bh, blw = 0; /* bar geometry */ | |
+static int bh; /* bar height */ | |
static int lrpad; /* sum of left and right padding for text */ | |
static int (*xerrorxlib)(Display *, XErrorEvent *); | |
static unsigned int numlockmask = 0; | |
@@ -440,7 +440,7 @@ buttonpress(XEvent *e) | |
if (i < LENGTH(tags)) { | |
click = ClkTagBar; | |
arg.ui = 1 << i; | |
- } else if (ev->x < x + blw) | |
+ } else if (ev->x < x + TEXTW(selmon->ltsymbol)) | |
click = ClkLtSymbol; | |
else if (ev->x > selmon->ww - (int)TEXTW(stext)) | |
click = ClkStatusText; | |
@@ -731,7 +731,7 @@ drawbar(Monitor *m) | |
urg & 1 << i); | |
x += w; | |
} | |
- w = blw = TEXTW(m->ltsymbol); | |
+ w = TEXTW(m->ltsymbol); | |
drw_setscheme(drw, scheme[SchemeNorm]); | |
x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0); | |