diff --git a/abstract_client.cpp b/abstract_client.cpp index 928cc40099..5befc37839 100644 --- a/abstract_client.cpp +++ b/abstract_client.cpp @@ -190,6 +190,15 @@ void AbstractClient::doSetActive() } void AbstractClient::updateLayer() +{ + StackingUpdatesBlocker blocker(workspace()); + invalidateLayer(); // invalidate, will be updated when doing restacking + for (auto it = transients().constBegin(), + end = transients().constEnd(); it != end; ++it) + (*it)->updateLayer(); +} + +void AbstractClient::invalidateLayer() { } diff --git a/abstract_client.h b/abstract_client.h index c29e0d691e..d0468f7558 100644 --- a/abstract_client.h +++ b/abstract_client.h @@ -505,6 +505,8 @@ protected: **/ void removeTransientFromList(AbstractClient* cl); + virtual void invalidateLayer(); + private: void handlePaletteChange(); QSharedPointer m_tabBoxClient; diff --git a/client.h b/client.h index 31aa9e3f83..593d622e75 100644 --- a/client.h +++ b/client.h @@ -267,7 +267,6 @@ public: virtual Layer layer() const; Layer belongsToLayer() const; - void invalidateLayer(); void updateLayer() override; int sessionStackingOrder() const; @@ -521,6 +520,7 @@ protected: void doMinimize() override; void doSetSkipPager() override; void doSetSkipTaskbar() override; + void invalidateLayer() override; private Q_SLOTS: void delayedSetShortcut(); diff --git a/layers.cpp b/layers.cpp index 6996638306..d8c75776db 100644 --- a/layers.cpp +++ b/layers.cpp @@ -867,11 +867,7 @@ void Client::updateLayer() { if (layer() == belongsToLayer()) return; - StackingUpdatesBlocker blocker(workspace()); - invalidateLayer(); // invalidate, will be updated when doing restacking - for (auto it = transients().constBegin(), - end = transients().constEnd(); it != end; ++it) - (*it)->updateLayer(); + AbstractClient::updateLayer(); } bool rec_checkTransientOnTop(const QList &transients, const Client *topmost)