Bug 458622 - Window order gets briefly switched when changing workspaces, when a window is set to appear on all desktops
Summary: Window order gets briefly switched when changing workspaces, when a window is...
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: compositing (show other bugs)
Version: 5.25.4
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-09-02 00:04 UTC by Adam Fontenot
Modified: 2022-09-19 07:03 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
screen recording of the problem (3.51 MB, video/x-matroska)
2022-09-02 00:04 UTC, Adam Fontenot
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Adam Fontenot 2022-09-02 00:04:45 UTC
Created attachment 151775 [details]
screen recording of the problem

SUMMARY
When you have a window open on workspace 1, and another window open on workspace 2, a third window that is set to show up on all desktops will briefly pop up above the other windows, before (spontaneously) finding its correct order a second or so later, every time you change workspaces.

This is *extremely* irritating and should be easy to reproduce.

The bug is probably somehow related to https://bugs.kde.org/show_bug.cgi?id=455429 but it's not the same issue. I don't have "slide back" enabled.

Note: I'm using "workspace" and "desktop" synonymously in what follows. KDE is not consistent in how it describes this concept.

STEPS TO REPRODUCE
1. Open a window on workspace 1 and another window on workspace 2.
2. Open a third window and use the window actions to put the window "On All Desktops".
3. Toggle between the workspaces and raise the windows you created in step 1 so that they're above the third window in the order.
4. Toggle between the workspaces.

OBSERVED RESULT
The third window (created in step 2) that is set to open on all desktops will briefly "flash" above the other windows when you change workspaces, even though it should be at the bottom of the stack on both workspaces. After a brief (~1s) period, it will then drop down below the other windows to its correct order.

Windows set to appear on all desktops will briefly flash above even windows that have "keep above" set.

Changing the Virtual Desktop Switching Animation to "Fade Desktop" instead of "Slide" does not fix the problem. It's a little harder to detect because the animation is faster, but definitely still happening.

EXPECTED RESULT
Windows should stay at the correct order when switching workspaces.

SOFTWARE/OS VERSIONS
Operating System: Arch Linux
KDE Plasma Version: 5.25.4
KDE Frameworks Version: 5.97.0
Qt Version: 5.15.5
Kernel Version: 5.19.5-arch1-1 (64-bit)
Graphics Platform: X11
Graphics Processor: Mesa Intel® HD Graphics 3000

ADDITIONAL INFORMATION
I'm about 90% sure I saw someone report this issue on the KDE subreddit around the time 5.25 was released, but I can't seem to find it now.

I think this is a regression in 5.25 but I'm not certain about that. At the very least it's a regression over ~6 months ago.
Comment 1 Adam Fontenot 2022-09-13 05:08:02 UTC
A friend also using KDE on Arch Linux was able to reproduce this. It's likely the bug affects all users of 5.25.
Comment 2 Vlad Zahorodnii 2022-09-19 07:00:48 UTC
Git commit 6d9f740d6f02c7d8b8005edc3573c76b8f8f3cc3 by Vlad Zahorodnii, on behalf of Eric Edlund.
Committed on 19/09/2022 at 07:00.
Pushed by vladz into branch 'master'.

Better handle windows on all desktops in slide effect

Change the render cycle for slide effect. Now, windows will be drawn on each desktop or not in the paintWindow() loop instead of the paintScreen() loop. This allows us to respect stacking order better by painting all of the same window together instead of per VD.
Related: bug 457486

M  +75   -86   src/effects/slide/slide.cpp
M  +4    -8    src/effects/slide/slide.h

https://invent.kde.org/plasma/kwin/commit/6d9f740d6f02c7d8b8005edc3573c76b8f8f3cc3
Comment 3 Vlad Zahorodnii 2022-09-19 07:03:25 UTC
Git commit 5ccb8f8d20933d89065708b83f9e62ff01d2e50a by Vlad Zahorodnii, on behalf of Eric Edlund.
Committed on 19/09/2022 at 07:03.
Pushed by vladz into branch 'Plasma/5.26'.

Better handle windows on all desktops in slide effect

Change the render cycle for slide effect. Now, windows will be drawn on each desktop or not in the paintWindow() loop instead of the paintScreen() loop. This allows us to respect stacking order better by painting all of the same window together instead of per VD.
Related: bug 457486


(cherry picked from commit 6d9f740d6f02c7d8b8005edc3573c76b8f8f3cc3)

M  +75   -86   src/effects/slide/slide.cpp
M  +4    -8    src/effects/slide/slide.h

https://invent.kde.org/plasma/kwin/commit/5ccb8f8d20933d89065708b83f9e62ff01d2e50a