Summary: | Child windows of fullscreen windows appear behind the fullscreen window in Xwayland | ||
---|---|---|---|
Product: | Wayland | Reporter: | nerdopolis1 |
Component: | weston | Assignee: | Wayland bug list <wayland-bugs> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | ||
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
shell: Ensure transient surfaces are included in the layer of their parent
shell: Ensure transient surfaces are included in the layer of their parent (updated) |
Description
nerdopolis1
2013-09-16 21:41:34 UTC
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.