diff --git a/src/server/event.rs b/src/server/event.rs index 55ed56c..dee6903 100644 --- a/src/server/event.rs +++ b/src/server/event.rs @@ -273,7 +273,6 @@ impl SurfaceEvents { target: Entity, state: &mut ServerState, ) { - let connection = &mut state.connection; let state = &mut state.inner; let xdg_surface::Event::Configure { serial } = event else { unreachable!(); diff --git a/src/server/mod.rs b/src/server/mod.rs index 4de3a7d..ea26452 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -613,22 +613,16 @@ impl ServerState { event.handle(target, self); } - let query = self - .world - .query_mut::<(&PendingSurfaceState,)>() + let query = self.world.query_mut::<(&x::Window, &PendingSurfaceState)>(); + let iter = query .into_iter() - .map(|(e, _)| e) + .map(|(e, (win, dims))| (e, (*win, *dims))) .collect::>(); - for entity in query { - let dims = self - .world + for (entity, (win, dims)) in iter.into_iter() { + self.connection.set_window_dims(win, 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 { @@ -1534,7 +1528,7 @@ impl InnerServerState { } } -#[derive(Default, Debug)] +#[derive(Default, Debug, Copy, Clone)] pub struct PendingSurfaceState { pub x: i32, pub y: i32,