Bug 406101

Summary: Window "Keep above" overrides "Show Desktop"
Product: [Plasma] kwin Reporter: samuel.damron12
Component: effects-window-managementAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: bugseforuns, nate
Priority: NOR Flags: vlad.zahorodnii: ReviewRequest+
Version: 5.15.3   
Target Milestone: ---   
Platform: Kubuntu   
OS: Linux   
URL: https://phabricator.kde.org/D20153
Latest Commit: Version Fixed In: 6.0
Sentry Crash Report:

Description samuel.damron12 2019-04-01 05:30:32 UTC
If a window is set to "Keep above" all other windows, when "Show Desktop" is hit, the window remains on-screen and unaffected by animations. Clicking anywhere but the active window results in it unceremoniously vanishing, but it can still be manipulated and used until the user clicks outside, which makes it vanish. Hitting "Show Desktop" again will make it pop up unanimated.

"Show Desktop" should probably deal with "Keep Above" windows properly like the rest of the window management effects by having it hidden away just like all the other windows. Looks buggy at the moment.
Comment 1 Vlad Zahorodnii 2019-04-02 20:44:31 UTC
Git commit 1e2a0028c3151cb38f252baa78a5f22b8cd7c7e6 by Vlad Zagorodniy.
Committed on 02/04/2019 at 20:44.
Pushed by vladz into branch 'master'.

Move keep-above clients to the Normal layer when showing desktop

Summary:
Implementation of the Show Desktop feature moves desktop windows to
the Above layer, but it doesn't take into account existing clients
that belong to the Above layer. If there are any, we have to move
them to a layer below (e.g. normal), otherwise those clients will be
visible when showing the desktop.

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D20153

M  +1    -1    abstract_client.cpp
M  +3    -1    workspace.cpp

https://commits.kde.org/kwin/1e2a0028c3151cb38f252baa78a5f22b8cd7c7e6
Comment 2 Vlad Zahorodnii 2019-04-16 08:10:41 UTC
Git commit 8010e076ee2dbcaaa39f777b2ea6dc96a5495d6f by Vlad Zagorodniy.
Committed on 16/04/2019 at 08:10.
Pushed by vladz into branch 'master'.

Revert "Move keep-above clients to the Normal layer when showing desktop"

This reverts commit 1e2a0028c3151cb38f252baa78a5f22b8cd7c7e6.

Unfortunately, we can't move clients from the above layer to the normal
layer because some of those clients have to be visible when showing
desktop, one such client for example is krunner.

M  +1    -1    abstract_client.cpp
M  +1    -3    workspace.cpp

https://commits.kde.org/kwin/8010e076ee2dbcaaa39f777b2ea6dc96a5495d6f
Comment 3 Patrick Silva 2019-04-27 20:59:50 UTC
The behavior described here persists on neon dev unstable.

Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.15.80
KDE Frameworks Version: 5.58.0
Qt Version: 5.12.0
Comment 4 Nate Graham 2019-04-28 15:11:36 UTC
The fix was reverted because it broke other things, unfortunately. So it looks like this behavior is here to stay and is not considered to be "as designed." :/
Comment 5 Nate Graham 2019-04-28 15:11:51 UTC
I mean, *now* considered as designed. :)
Comment 6 Vlad Zahorodnii 2019-04-29 06:38:13 UTC
Well, no. The bug is still there.
Comment 7 Vlad Zahorodnii 2023-06-01 09:20:48 UTC
Git commit a7f41f26bbed92c153d2b47fb4ad295713f2f8e6 by Vlad Zahorodnii.
Committed on 01/06/2023 at 08:59.
Pushed by vladz into branch 'master'.

Make show desktop mode hide windows

After porting the desktop background window to the layer-shell protocol,
the desktop window is not raised up in the stack anymore when the
showing desktop window is activated. The main reason to avoid this is to
avoid fighting and overriding layer shell logic.

As another way to implement the show desktop mode, this change makes the
workspace hide windows that don't belong to desktop.

It's a better solution for a couple of reasons: "keep above" and other
overlay windows will be properly hidden and it lets us avoid touching
the stacking order.
Related: bug 387593, bug 469827

M  +5    -0    src/activation.cpp
M  +1    -0    src/effects.cpp
M  +1    -0    src/effects.h
M  +2    -2    src/input.cpp
M  +1    -1    src/internalwindow.cpp
M  +1    -1    src/libkwineffects/kwinanimationeffect.cpp
M  +6    -0    src/libkwineffects/kwineffects.h
M  +23   -80   src/plugins/eyeonscreen/package/contents/code/main.js
M  +2    -11   src/plugins/windowaperture/package/contents/code/main.js
M  +2    -1    src/scene/windowitem.cpp
M  +1    -1    src/scripting/workspace_wrapper.cpp
M  +1    -1    src/waylandwindow.cpp
M  +19   -12   src/window.cpp
M  +6    -1    src/window.h
M  +14   -26   src/workspace.cpp
M  +16   -15   src/x11window.cpp
M  +2    -1    src/x11window.h
M  +0    -3    src/xdgshellwindow.cpp

https://invent.kde.org/plasma/kwin/-/commit/a7f41f26bbed92c153d2b47fb4ad295713f2f8e6