Use the additional alpha-value as offset to support a changing alpha properly

This commit is contained in:
Moritz Biering
2021-05-06 14:32:57 +02:00
parent 69925ee23b
commit bb56685063
3 changed files with 17 additions and 7 deletions

17
x.c
View File

@ -182,6 +182,7 @@ static void xsetenv(void);
static void xseturgency(int);
static int evcol(XEvent *);
static int evrow(XEvent *);
static float clamp(float, float, float);
static void expose(XEvent *);
static void visibility(XEvent *);
@ -319,10 +320,8 @@ changealpha(const Arg *arg)
{
if((alpha > 0 && arg->f < 0) || (alpha < 1 && arg->f > 0))
alpha += arg->f;
if(alpha < 0)
alpha = 0;
if(alpha > 1)
alpha = 1;
alpha = clamp(alpha, 0.0, 1.0);
alphaUnfocus = clamp(alpha-alphaOffset, 0.0, 1.0);
xloadcols();
redraw();
@ -381,6 +380,15 @@ evrow(XEvent *e)
return y / win.ch;
}
float
clamp(float value, float lower, float upper) {
if(value < lower)
return lower;
if(value > upper)
return upper;
return value;
}
void
mousesel(XEvent *e, int done)
{
@ -2298,6 +2306,7 @@ run:
cols = MAX(cols, 1);
rows = MAX(rows, 1);
defaultbg = MAX(LEN(colorname), 256);
alphaUnfocus = alpha-alphaOffset;
tnew(cols, rows);
xinit(cols, rows);
xsetenv();