I don't know if this is weston thing, or not actually. There seems to be no way to test a child window, such as a menu with a native fullscreen weston client It seems that the fullscreen Plasma wallpaper is positioned in the proper coordinates, Weston treats it like a fullscreen window, and when I rightclick on it for the menu properties the menu properties appear on the bottom, when it is active. I would file another bug for the issue that the Wallpaper window is set to appear on top of all windows, but I don't know if the wayland protocol, or if there is a shell protocol that supports stay on top / stay on bottom yet.
This looks like a bug in shell.c, where the layer of all fullscreen surfaces is stacked above the layer of normal surfaces. Transient or popup surfaces which are transient for a fullscreen surface are included in the latter layer — and are hence stacked below the fullscreen layer.
Created attachment 88701 [details] [review] shell: Ensure transient surfaces are included in the layer of their parent This seems to fix it for me. I’ve tested it with the broken application and with gedit, but with nothing else. Suggestions for better ways to test it are welcome.
Created attachment 88703 [details] [review] shell: Ensure transient surfaces are included in the layer of their parent (updated) Updated to use weston_view_geometry_dirty() instead of weston_surface_damage().
(In reply to comment #3) > Created attachment 88703 [details] [review] [review] > shell: Ensure transient surfaces are included in the layer of their parent > (updated) > > Updated to use weston_view_geometry_dirty() instead of > weston_surface_damage(). This should track the layer the transient-for (parent) surface is in, rather than unconditionally slamming all transients into the fullscreen layer. Else fullscreen windows would be obscured by transients of non-fullscreen windows.
(In reply to comment #4) > (In reply to comment #3) > > Created attachment 88703 [details] [review] [review] [review] > > shell: Ensure transient surfaces are included in the layer of their parent > > (updated) > > > > Updated to use weston_view_geometry_dirty() instead of > > weston_surface_damage(). > > This should track the layer the transient-for (parent) surface is in, rather > than unconditionally slamming all transients into the fullscreen layer. > Else fullscreen windows would be obscured by transients of non-fullscreen > windows. Yeah, sounds like you found the root cause of the problem here, but we do need to be smarted about moving transients in and out of the fullscreen layer along with the parent.
Radically different patch set posted to the mailing list: http://lists.freedesktop.org/archives/wayland-devel/2013-November/012195.html
With Philips stacking fixes and this: commit d8a8860d7435f05825e1878225c20fdfeb05a1c0 Author: Kristian Høgsberg <krh@bitplanet.net> Date: Thu Jan 2 22:40:37 2014 -0800 xwm: Handle WM_TRANSIENT_FOR Set up X windows that are transient for another window as transient surfaces in shell.c. This keeps the transient windows on top of their parent as windows are raised, lowered for fullscreened. https://bugs.freedesktop.org/show_bug.cgi?id=69443 I think we can now close this one.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.