-- v3: winewayland: Use subsurfaces for unmanaged windows. winewayland: Introduce a new update_wayland_surface_state_toplevel helper. winewayland: Introduce a new wayland_surface_reconfigure_xdg helper. winewayland: Introduce a new wayland_surface role enumeration. winewayland: Call wayland_surface_clear_role in wayland_surface_destroy. winewayland: Move surface title change to wayland_surface_make_toplevel. winewayland: Attach client client surfaces to their toplevel surface. winewayland: Use WindowPosChanged swp_flags to decide if a window is visible. winewayland: Use the wayland_win_data client rect for child GL windows. winewayland: Split wayland_win_data_update_wayland_surface helper. winewayland: Call ensure_window_surface_contents with the toplevel window. win32u: Update children window state when the parent state changes. winewayland: Get rid of window_surface reference from wayland_win_data. winewayland: Move client surface to wayland_win_data struct. winewayland: Get rid of the window surface individual locks. winewayland: Introduce a new wayland_client_surface_create helper. winewayland: Get rid of wayland_surface reference from window_surface. winewayland: Move window contents buffer to wayland_win_data struct. winewayland: Reset the buffer damage region immediately after copy. winewayland: Introduce a new get_window_surface_contents helper. winewayland: Introduce a new set_window_surface_contents helper. winewayland: Introduce a new ensure_window_surface_contents helper. winewayland: Post WM_WAYLAND_CONFIGURE outside of the surface lock. winewayland: Store all window rects in wayland_win_data.
This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/wine/-/merge_requests/6323
This MR doesn't deal with that (which is fine), but then it's not clear to me how an approach based on this design would evolve and how complex it would become to support the popup positioning scenarios we want (and whether it would then be worth it over !6107). I think this may need a bit more exploration to get a more complete picture (or perhaps you already have a good idea of how this would look like?).
I've added changes to implement this, I think it is still quite straightforward, although the wayland_surface wl_subsurface is only used for unmanaged windows and not for child windows at all.