[effects/blur] Don't blur outside the frame rect

We need to clip the blur region to ensure that the background behind
client side drop shadows is not blurred.

BUG: 422202
This commit is contained in:
Vlad Zahorodnii 2020-05-29 09:11:04 +03:00
parent 61c6d58172
commit 309fbf1837

View file

@ -417,7 +417,7 @@ QRegion BlurEffect::blurRegion(const EffectWindow *w) const
const QRegion appRegion = qvariant_cast<QRegion>(value);
if (!appRegion.isEmpty()) {
if (w->decorationHasAlpha() && effects->decorationSupportsBlurBehind()) {
region = w->shape();
region = w->shape() & w->rect();
region -= w->decorationInnerRect();
}
region |= appRegion.translated(w->contentsRect().topLeft()) &
@ -425,12 +425,12 @@ QRegion BlurEffect::blurRegion(const EffectWindow *w) const
} else {
// An empty region means that the blur effect should be enabled
// for the whole window.
region = w->shape();
region = w->shape() & w->rect();
}
} else if (w->decorationHasAlpha() && effects->decorationSupportsBlurBehind()) {
// If the client hasn't specified a blur region, we'll only enable
// the effect behind the decoration.
region = w->shape();
region = w->shape() & w->rect();
region -= w->decorationInnerRect();
}