diff --git a/src/ifs/wl_surface/wl_subsurface.rs b/src/ifs/wl_surface/wl_subsurface.rs index 377226f0..2e7d37c6 100644 --- a/src/ifs/wl_surface/wl_subsurface.rs +++ b/src/ifs/wl_surface/wl_subsurface.rs @@ -138,6 +138,9 @@ impl WlSubsurface { if let Some((x, y)) = pending.position.take() { self.position .set(self.surface.buffer_abs_pos.get().at_point(x, y)); + let (parent_x, parent_y) = self.parent.buffer_abs_pos.get().position(); + self.surface + .set_absolute_position(parent_x + x, parent_y + y); self.parent.need_extents_update.set(true); } Ok(()) @@ -172,6 +175,8 @@ impl WlSubsurface { self.surface.set_toplevel(self.parent.toplevel.get()); self.surface.ext.set(self.clone()); update_children_attach(self)?; + let (x, y) = self.parent.buffer_abs_pos.get().position(); + self.surface.set_absolute_position(x, y); Ok(()) }