Expose transientFor and only blur underneath when transientParent is dock
This commit is contained in:
parent
d4cd2b5a6a
commit
e41c5af676
5 changed files with 27 additions and 1 deletions
|
@ -46,6 +46,7 @@ public:
|
||||||
void addLayerRepaint(const QRect &r) override;
|
void addLayerRepaint(const QRect &r) override;
|
||||||
void addLayerRepaint(int x, int y, int w, int h) override;
|
void addLayerRepaint(int x, int y, int w, int h) override;
|
||||||
EffectWindow *findModal() override;
|
EffectWindow *findModal() override;
|
||||||
|
EffectWindow *transientFor() override;
|
||||||
const EffectWindowGroup *group() const override;
|
const EffectWindowGroup *group() const override;
|
||||||
bool isPaintingEnabled() override;
|
bool isPaintingEnabled() override;
|
||||||
EffectWindowList mainWindows() const override;
|
EffectWindowList mainWindows() const override;
|
||||||
|
@ -340,6 +341,11 @@ EffectWindow *MockEffectWindow::findModal()
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EffectWindow *MockEffectWindow::transientFor()
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
const EffectWindowGroup *MockEffectWindow::group() const
|
const EffectWindowGroup *MockEffectWindow::group() const
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
15
effects.cpp
15
effects.cpp
|
@ -1984,6 +1984,21 @@ EffectWindow* EffectWindowImpl::findModal()
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EffectWindow* EffectWindowImpl::transientFor()
|
||||||
|
{
|
||||||
|
auto client = qobject_cast<AbstractClient *>(toplevel);
|
||||||
|
if (!client) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
AbstractClient *transientFor = client->transientFor();
|
||||||
|
if (transientFor) {
|
||||||
|
return transientFor->effectWindow();
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
QWindow *EffectWindowImpl::internalWindow() const
|
QWindow *EffectWindowImpl::internalWindow() const
|
||||||
{
|
{
|
||||||
auto client = qobject_cast<InternalClient *>(toplevel);
|
auto client = qobject_cast<InternalClient *>(toplevel);
|
||||||
|
|
|
@ -471,6 +471,7 @@ public:
|
||||||
void deleteProperty(long atom) const override;
|
void deleteProperty(long atom) const override;
|
||||||
|
|
||||||
EffectWindow* findModal() override;
|
EffectWindow* findModal() override;
|
||||||
|
EffectWindow* transientFor() override;
|
||||||
EffectWindowList mainWindows() const override;
|
EffectWindowList mainWindows() const override;
|
||||||
|
|
||||||
WindowQuadList buildQuads(bool force = false) const override;
|
WindowQuadList buildQuads(bool force = false) const override;
|
||||||
|
|
|
@ -604,9 +604,12 @@ void BlurEffect::drawWindow(EffectWindow *w, int mask, const QRegion ®ion, Wi
|
||||||
shape = shape.translated(data.xTranslation(), data.yTranslation());
|
shape = shape.translated(data.xTranslation(), data.yTranslation());
|
||||||
shape = shape & region;
|
shape = shape & region;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EffectWindow* modal = w->transientFor();
|
||||||
|
const bool transientForIsDock = (modal ? modal->isDock() : false);
|
||||||
|
|
||||||
if (!shape.isEmpty()) {
|
if (!shape.isEmpty()) {
|
||||||
doBlur(shape, screen, data.opacity(), data.screenProjectionMatrix(), w->isDock(), w->geometry());
|
doBlur(shape, screen, data.opacity(), data.screenProjectionMatrix(), w->isDock() || transientForIsDock, w->geometry());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2373,6 +2373,7 @@ public:
|
||||||
|
|
||||||
virtual bool isModal() const = 0;
|
virtual bool isModal() const = 0;
|
||||||
Q_SCRIPTABLE virtual KWin::EffectWindow* findModal() = 0;
|
Q_SCRIPTABLE virtual KWin::EffectWindow* findModal() = 0;
|
||||||
|
Q_SCRIPTABLE virtual KWin::EffectWindow* transientFor() = 0;
|
||||||
Q_SCRIPTABLE virtual QList<KWin::EffectWindow*> mainWindows() const = 0;
|
Q_SCRIPTABLE virtual QList<KWin::EffectWindow*> mainWindows() const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue