From b6fe8e87cf04256ee3945ed2486a2c53ebe09bd6 Mon Sep 17 00:00:00 2001 From: En-En <39373446+En-En-Code@users.noreply.github.com> Date: Tue, 16 Dec 2025 13:32:15 +0000 Subject: [PATCH] test: while dragging, check set_window_dims calls == 1 --- src/server/tests.rs | 31 +++++++++++++++++++++++++++++++ testwl/src/lib.rs | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/server/tests.rs b/src/server/tests.rs index 65f42e7..0f6c963 100644 --- a/src/server/tests.rs +++ b/src/server/tests.rs @@ -160,6 +160,7 @@ struct WindowData { struct FakeXConnection { focused_window: Option, windows: HashMap, + set_window_dims_counter: usize, } impl FakeXConnection { @@ -219,6 +220,7 @@ impl super::XConnection for FakeXConnection { width: state.width as _, height: state.height as _, }; + self.set_window_dims_counter += 1; true } @@ -1776,6 +1778,35 @@ fn reconfigure_popup_after_map() { f.assert_window_dimensions(popup, p_id, new_dims); } +#[test] +fn drag_around_popup() { + let (mut f, comp) = TestFixture::new_with_compositor(); + let toplevel = unsafe { Window::new(1) }; + let (_, t_id) = f.create_toplevel(&comp, toplevel); + + let popup = unsafe { Window::new(2) }; + let (_, p_id) = f.create_popup(&comp, PopupBuilder::new(popup, toplevel, t_id).x(0).y(0)); + + let before_counter = f.connection().set_window_dims_counter; + let mut new_dims = WindowDims { + x: 0, + y: 0, + width: 10, + height: 10, + }; + for _ in 0..10 { + new_dims.x += 5; + new_dims.y += 5; + f.reconfigure_window(popup, new_dims, true); + } + f.run(); + f.run(); + f.assert_window_dimensions(popup, p_id, new_dims); + + let after_counter = f.connection().set_window_dims_counter; + assert_eq!(before_counter + 1, after_counter); +} + #[test] fn reconfigure_toplevel() { let (mut f, comp) = TestFixture::new_with_compositor(); diff --git a/testwl/src/lib.rs b/testwl/src/lib.rs index b6c2e5b..81f4a3a 100644 --- a/testwl/src/lib.rs +++ b/testwl/src/lib.rs @@ -1673,7 +1673,7 @@ impl Dispatch for State { } xdg_surface::Request::AckConfigure { serial } => { let data = state.surfaces.get_mut(surface_id).unwrap(); - assert_eq!(data.xdg().last_configure_serial, serial); + assert!(data.xdg().last_configure_serial >= serial); } xdg_surface::Request::Destroy => { let data = state.surfaces.get_mut(surface_id).unwrap();