Honor opacity prop if set

If opacity prop is explicitly set on the window, active/inactive opacity
shouldn't kick in.
This commit is contained in:
Yuxuan Shui 2018-08-11 13:54:51 -04:00
parent 91ca387723
commit 66785aae99
1 changed files with 12 additions and 10 deletions

View File

@ -2377,19 +2377,21 @@ calc_opacity(session_t *ps, win *w) {
opacity = 0;
else {
// Try obeying opacity property and window type opacity firstly
if (OPAQUE == (opacity = w->opacity_prop)) {
if(w->has_opacity_prop)
opacity = w->opacity_prop;
else {
opacity = ps->o.wintype_opacity[w->window_type] * OPAQUE;
}
// Respect inactive_opacity in some cases
if (ps->o.inactive_opacity && false == w->focused
&& (OPAQUE == opacity || ps->o.inactive_opacity_override)) {
opacity = ps->o.inactive_opacity;
}
// Respect inactive_opacity in some cases
if (ps->o.inactive_opacity && false == w->focused
&& (OPAQUE == opacity || ps->o.inactive_opacity_override)) {
opacity = ps->o.inactive_opacity;
}
// Respect active_opacity only when the window is physically focused
if (OPAQUE == opacity && ps->o.active_opacity && win_is_focused_real(ps, w))
opacity = ps->o.active_opacity;
// Respect active_opacity only when the window is physically focused
if (OPAQUE == opacity && ps->o.active_opacity && win_is_focused_real(ps, w))
opacity = ps->o.active_opacity;
}
}
w->opacity_tgt = opacity;