diff --git a/abstract_client.cpp b/abstract_client.cpp index c3e7849a36..12e030cd32 100644 --- a/abstract_client.cpp +++ b/abstract_client.cpp @@ -353,6 +353,8 @@ Layer AbstractClient::belongsToLayer() const // and the docks move into the NotificationLayer (which is between Above- and // ActiveLayer, so that active fullscreen windows will still cover everything) // Since the desktop is also activated, nothing should be in the ActiveLayer, though + if (isInternal()) + return UnmanagedLayer; if (isDesktop()) return workspace()->showingDesktop() ? AboveLayer : DesktopLayer; if (isSplash()) // no damn annoying splashscreens @@ -2080,4 +2082,9 @@ Group *AbstractClient::group() return nullptr; } +bool AbstractClient::isInternal() const +{ + return false; +} + } diff --git a/abstract_client.h b/abstract_client.h index 2e92096e39..5173cbd723 100644 --- a/abstract_client.h +++ b/abstract_client.h @@ -817,6 +817,14 @@ public: **/ virtual Group *group(); + /** + * Returns whether this is an internal client. + * + * Internal clients are created by KWin and used for special purpose windows, + * like the task switcher, etc. + **/ + virtual bool isInternal() const; + public Q_SLOTS: virtual void closeWindow() = 0; diff --git a/shell_client.cpp b/shell_client.cpp index c481db9f5b..b577435484 100644 --- a/shell_client.cpp +++ b/shell_client.cpp @@ -1083,11 +1083,6 @@ pid_t ShellClient::pid() const return surface()->client()->processId(); } -bool ShellClient::isInternal() const -{ - return false; -} - bool ShellClient::isLockScreen() const { return surface()->client() == waylandServer()->screenLockerClientConnection(); diff --git a/shell_client.h b/shell_client.h index 7c553eb003..699f120baf 100644 --- a/shell_client.h +++ b/shell_client.h @@ -122,7 +122,6 @@ public: **/ pid_t pid() const override; - virtual bool isInternal() const; bool isLockScreen() const override; bool isInputMethod() const override; virtual QWindow *internalWindow() const;