render: track subsurfaces created before role assignment

This commit is contained in:
Isaac Freund
2021-06-05 19:30:43 +00:00
parent aaf5a190fc
commit 0e9dc089d1
4 changed files with 25 additions and 5 deletions

View File

@ -74,6 +74,11 @@ pub fn create(wlr_xdg_popup: *wlr.XdgPopup, parent: Parent) void {
wlr_xdg_popup.base.events.unmap.add(&self.unmap);
wlr_xdg_popup.base.events.new_popup.add(&self.new_popup);
wlr_xdg_popup.base.surface.events.new_subsurface.add(&self.new_subsurface);
// There may already be subsurfaces present on this surface that we
// aren't aware of and won't receive a new_subsurface event for.
var it = wlr_xdg_popup.base.surface.subsurfaces.iterator(.forward);
while (it.next()) |s| Subsurface.create(s, parent);
}
fn handleDestroy(listener: *wl.Listener(*wlr.XdgSurface), wlr_xdg_surface: *wlr.XdgSurface) void {