diff --git a/src/server/event.rs b/src/server/event.rs index fb82da9..55ed56c 100644 --- a/src/server/event.rs +++ b/src/server/event.rs @@ -330,23 +330,20 @@ impl SurfaceEvents { } } - connection.set_window_dims( - window, - PendingSurfaceState { - x, - y, - width: width as _, - height: height as _, - }, - ); window_data.attrs.dims = WindowDims { x: x as i16, y: y as i16, width, height, }; - + let pending = PendingSurfaceState { + x, + y, + width: width as _, + height: height as _, + }; drop(query); + state.world.insert_one(target, pending).unwrap(); update_surface_viewport(&state.world, state.world.query_one(target).unwrap()); } diff --git a/src/server/mod.rs b/src/server/mod.rs index 56dde09..4de3a7d 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -613,6 +613,24 @@ impl ServerState { event.handle(target, self); } + let query = self + .world + .query_mut::<(&PendingSurfaceState,)>() + .into_iter() + .map(|(e, _)| e) + .collect::>(); + for entity in query { + let dims = self + .world + .remove_one::(entity) + .unwrap(); + let entity = self.world.entity(entity).unwrap(); + let mut query = entity.query::<(&x::Window,)>(); + let window = *query.get().unwrap().0; + drop(query); + self.connection.set_window_dims(window, dims); + } + if self.global_offset_updated { if self.global_output_offset.x.owner.is_none() || self.global_output_offset.y.owner.is_none()