Skip to content

wayland/subsurface: Keep subsurface actors reactive

The actors of Wayland subsurfaces are set to be reactive on creation, when receiving the wl_subcompositor.get_subsurface request.

However, if a client creates several subsurfaces and then creates the xdg_toplevel object after, the previous subsurface actors are reset.

As a result, Clutter picking will skip and ignore those actors in clutter_actor_should_pick_paint() because they aren't marked as reactive anymore.

An example of such a client being affected by this issue is SCTK, the Rust library implementing client side decorations for Wayland used internally by winit and alacritty.

Move the set_reactive() call from get_subsurface() to the subsurface sync_actor_subsurface_state() vfunc to make sure those remain reactive even after xdg_surface.get_toplevel is invoked.

Closes: #1024 (closed)

Edited by Olivier Fourdan

Merge request reports