core: fix background not blurred under transparent windows
When a window has 0 opacity, it's rendering is skipped completely. Thus its background isn't blurred. This commit fixes that. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
78f002d154
commit
4dc5a04735
|
@ -252,7 +252,10 @@ void paint_all_new(session_t *ps, struct managed_win *t, bool ignore_damage) {
|
|||
ps->backend_data->ops->compose(ps->backend_data, w->win_image,
|
||||
w->g.x, w->g.y,
|
||||
®_paint_in_bound, ®_visible);
|
||||
} else {
|
||||
} else if (w->opacity * MAX_ALPHA >= 1){
|
||||
// We don't need to paint the window body itself if it's
|
||||
// completely transparent.
|
||||
|
||||
// For window image processing, we don't need to limit the process
|
||||
// region to damage, since the window image data is independent
|
||||
// from the target image data, which we want to protect.
|
||||
|
|
|
@ -511,7 +511,8 @@ static struct managed_win *paint_preprocess(session_t *ps, bool *fade_running) {
|
|||
if (!w->ever_damaged || w->g.x + w->g.width < 1 ||
|
||||
w->g.y + w->g.height < 1 || w->g.x >= ps->root_width ||
|
||||
w->g.y >= ps->root_height || w->state == WSTATE_UNMAPPED ||
|
||||
(double)w->opacity * MAX_ALPHA < 1 || w->paint_excluded) {
|
||||
((double)w->opacity * MAX_ALPHA < 1 && !w->blur_background) ||
|
||||
w->paint_excluded) {
|
||||
// TODO: for consistency, even a window has 0 opacity, we still
|
||||
// probably need to blur its background, so to_paint shouldn't be
|
||||
// false for them.
|
||||
|
|
Loading…
Reference in New Issue