Bug 397448

Summary: Deleted transients have to remember their parents
Product: [Plasma] kwin Reporter: Vlad Zahorodnii <vlad.zahorodnii>
Component: coreAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: nate, notuxius
Priority: NOR Flags: vlad.zahorodnii: Wayland+
vlad.zahorodnii: X11+
Version: git master   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In: 5.15.0
Sentry Crash Report:

Description Vlad Zahorodnii 2018-08-14 13:02:43 UTC
Steps to reproduce:
* Open Dolphin
* Open Dolphin Preferences dialog
* Close it

Expected results:
During fade/glide/scale animation, the dialog stays above dolphin.

Actual results:
The dialog goes behind dolphin.

Possible cause:
Deleted windows can't be transients, so closed dialogs are not raised above their parents in Workspace::constrainedStackingOrder().
Comment 1 Vlad Zahorodnii 2018-08-14 13:03:38 UTC
s/Close it/Close the dialog/
Comment 2 Vlad Zahorodnii 2018-08-14 13:07:48 UTC
Also, maybe "dialog" is a wrong word for the preferences windows. I usually use the "dialog" word to call them. Sorry, if I mix terms.
Comment 3 Martin Flöser 2018-08-22 04:20:44 UTC
The word is "transient"
Comment 4 Vlad Zahorodnii 2018-08-22 07:08:52 UTC
I think it's worth to mention here that I submitted a patch a week ago that fixes this bug in some sense.

https://phabricator.kde.org/D14868

It works only with ordinary transients, not group transients.
Comment 5 Vlad Zahorodnii 2018-08-22 07:38:43 UTC
On Wayland, this bug is semi-reproducible:

* if the transient is active, it will stay above its parent during fade/glide/scale out animation

* if the parent window is active, the transient will go below it
Comment 6 Alexander Mentyu 2018-08-22 15:53:20 UTC
(In reply to Vlad Zagorodniy from comment #5)
> On Wayland, this bug is semi-reproducible:
> 
> * if the transient is active, it will stay above its parent during
> fade/glide/scale out animation
> 
> * if the parent window is active, the transient will go below it

Can reproduce in Wayland

Distribution: KDE neon Developer Edition
Kernel: 4.15.0-29-generic
Plasma: 5.13.80
Apps: 18.11.70
Qt: 5.11.1
Frameworks: 5.48.0
Graphics:
Card-1: Intel 
driver: i915 v: kernel bus ID: 00:02.0 chip ID: 8086:5917 
Card-2: NVIDIA GM108M [GeForce 940MX] 
driver: nouveau v: kernel bus ID: 01:00.0 chip ID: 10de:134d 
Display: wayland server: X.Org 1.19.6 
driver: modesetting,nouveau 
unloaded: fbdev,vesa alternate: nvidia compositor: kwin wayland 
resolution: 1920x1080~57Hz 
OpenGL: renderer: Mesa DRI Intel UHD Graphics 620 (Kabylake GT2) 
v:4.5 Mesa 18.0.5 compat-v:3.0 direct render: Yes
Comment 7 Vlad Zahorodnii 2018-09-13 08:02:38 UTC
Also, I noticed that panel popups(when you right-click on a panel) go behind it during the fade out animation.
Comment 8 Vlad Zahorodnii 2018-09-13 08:05:17 UTC
... on Wayland.
Comment 9 Vlad Zahorodnii 2018-10-16 15:58:28 UTC
Git commit fe4d69b653c67556ba1bc496428d981fdc003f4f by Vlad Zagorodniy.
Committed on 16/10/2018 at 15:58.
Pushed by vladz into branch 'master'.

Keep Deleted transients above old parents

Summary:
If a modal window is closed, usually, it will go behind its parent. The
reason for this is that Workspace::constrainedStackingOrder() puts only
AbstractClient transients above parents, not Deleted transients.

So, if fade/glide/scale effect animates the disappearing of a transient,
unfortunately, one can't see that animation.
FIXED-IN: 5.15.0

Test Plan:
=== Closing of a transient and parent window

Before:

https://www.youtube.com/watch?v=XiLq7EAVCp0

After:

https://www.youtube.com/watch?v=cH_Ki-sqY8M

=== Scale effect

Before:

https://www.youtube.com/watch?v=Eb2a3U7R10I

After:

https://www.youtube.com/watch?v=4AKu3fdrnYQ

=== Sheet effect

Before:

https://www.youtube.com/watch?v=xPPSnR5FUU0

After:

https://www.youtube.com/watch?v=o_hxTNT-5Hg

=== Popup menus on Wayland

Before:

https://www.youtube.com/watch?v=5DnrY8p3F5A

After:

https://www.youtube.com/watch?v=7XEo8n_CrCc

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: abetts, davidedmundson, kwin

Tags: #kwin

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

M  +217  -0    autotests/integration/stacking_order_test.cpp
M  +73   -0    deleted.cpp
M  +81   -0    deleted.h
M  +100  -19   layers.cpp
M  +1    -0    workspace.h

https://commits.kde.org/kwin/fe4d69b653c67556ba1bc496428d981fdc003f4f