diff --git a/app/dock/dockview.cpp b/app/dock/dockview.cpp index fbf519e45..8e65f0a84 100644 --- a/app/dock/dockview.cpp +++ b/app/dock/dockview.cpp @@ -23,7 +23,6 @@ #include "dockconfigview.h" #include "dockmenumanager.h" #include "effects.h" -#include "panelshadows_p.h" #include "positioner.h" #include "visibilitymanager.h" #include "../dockcorona.h" @@ -47,7 +46,6 @@ #include #include #include -#include #include #include @@ -559,12 +557,6 @@ void DockView::setBehaveAsPlasmaPanel(bool behavior) m_behaveAsPlasmaPanel = behavior; - if (m_behaveAsPlasmaPanel && m_effects->drawShadows()) { - PanelShadows::self()->addWindow(this, m_effects->enabledBorders()); - } else { - PanelShadows::self()->removeWindow(this); - } - emit behaveAsPlasmaPanelChanged(); } @@ -988,10 +980,7 @@ bool DockView::event(QEvent *e) if (m_shellSurface) { m_positioner->syncGeometry(); - - if (m_effects->drawShadows()) { - PanelShadows::self()->addWindow(this, m_effects->enabledBorders()); - } + m_effects->updateShadows(); } break; @@ -1001,7 +990,7 @@ bool DockView::event(QEvent *e) delete m_shellSurface; m_shellSurface = nullptr; qDebug() << "WAYLAND dock window surface was deleted..."; - PanelShadows::self()->removeWindow(this); + m_effects->clearShadows(); } break; diff --git a/app/dock/effects.cpp b/app/dock/effects.cpp index d0cf71ad5..c7d56d37d 100644 --- a/app/dock/effects.cpp +++ b/app/dock/effects.cpp @@ -55,6 +55,7 @@ void Effects::init() connect(m_view, &Latte::DockView::alignmentChanged, this, &Effects::updateEnabledBorders); connect(m_view, &Latte::DockView::behaveAsPlasmaPanelChanged, this, &Effects::updateEffects); + connect(m_view, &Latte::DockView::behaveAsPlasmaPanelChanged, this, &Effects::updateShadows); connect(this, SIGNAL(innerShadowChanged()), m_view->corona(), SIGNAL(availableScreenRectChanged())); } @@ -238,6 +239,20 @@ void Effects::setMask(QRect area) emit maskChanged(); } +void Effects::clearShadows() +{ + PanelShadows::self()->removeWindow(m_view); +} + +void Effects::updateShadows() +{ + if (m_view->behaveAsPlasmaPanel() && drawShadows()) { + PanelShadows::self()->addWindow(m_view, enabledBorders()); + } else { + PanelShadows::self()->removeWindow(m_view); + } +} + void Effects::updateEffects() { //! Don't apply any effect before the wayland surface is created under wayland diff --git a/app/dock/effects.h b/app/dock/effects.h index 6ae0d2414..215583952 100644 --- a/app/dock/effects.h +++ b/app/dock/effects.h @@ -85,6 +85,8 @@ public: Plasma::FrameSvg::EnabledBorders enabledBorders() const; public slots: + void clearShadows(); + void updateShadows(); void updateEffects(); void updateEnabledBorders();