[effects/invert] Don't block blur and background contrast effect

Summary:
Background behind some windows is not blurred because the invert effect
sets PAINT_WINDOW_TRANSFORMED. This essentially "turns off" the blur and
the background contrast effect unless we set the force roles.

Because the invert effect is a "post-processing"(not really) effect we
don't have to set that flag.

BUG: 279076
BUG: 359583
FIXED-IN: 5.14.3

Test Plan: {F6341916}

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D16358
This commit is contained in:
Vlad Zagorodniy 2018-10-21 21:04:25 +03:00
parent 69af30f3fb
commit 9fae2f4905
2 changed files with 7 additions and 15 deletions

View file

@ -82,19 +82,6 @@ bool InvertEffect::loadData()
return true;
}
void InvertEffect::prePaintScreen(ScreenPrePaintData &data, int time)
{
effects->prePaintScreen(data, time);
}
void InvertEffect::prePaintWindow(EffectWindow *w, WindowPrePaintData &data, int time)
{
if (m_valid && (m_allWindows != m_windows.contains(w))) {
data.mask |= PAINT_WINDOW_TRANSFORMED;
}
effects->prePaintWindow(w, data, time);
}
void InvertEffect::drawWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data)
{
// Load if we haven't already

View file

@ -41,12 +41,12 @@ public:
~InvertEffect();
virtual void drawWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
virtual void prePaintScreen(ScreenPrePaintData &data, int time);
virtual void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, int time);
virtual void paintEffectFrame(KWin::EffectFrame* frame, QRegion region, double opacity, double frameOpacity);
virtual bool isActive() const;
virtual bool provides(Feature);
int requestedEffectChainPosition() const override;
static bool supported();
public Q_SLOTS:
@ -65,6 +65,11 @@ private:
QList<EffectWindow*> m_windows;
};
inline int InvertEffect::requestedEffectChainPosition() const
{
return 99;
}
} // namespace
#endif