diff options
Diffstat (limited to 'niri-visual-tests')
| -rw-r--r-- | niri-visual-tests/src/cases/layout.rs | 22 | ||||
| -rw-r--r-- | niri-visual-tests/src/test_window.rs | 64 |
2 files changed, 45 insertions, 41 deletions
diff --git a/niri-visual-tests/src/cases/layout.rs b/niri-visual-tests/src/cases/layout.rs index be611cc5..e6807228 100644 --- a/niri-visual-tests/src/cases/layout.rs +++ b/niri-visual-tests/src/cases/layout.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use std::time::Duration; use niri::layout::workspace::ColumnWidth; -use niri::layout::Options; +use niri::layout::{LayoutElement as _, Options}; use niri::utils::get_monotonic_time; use niri_config::Color; use smithay::backend::renderer::element::RenderElement; @@ -73,12 +73,12 @@ impl Layout { rv.add_window(TestWindow::freeform(0), Some(ColumnWidth::Proportion(0.3))); rv.add_window(TestWindow::freeform(1), Some(ColumnWidth::Proportion(0.3))); - rv.layout.activate_window(&rv.windows[0]); + rv.layout.activate_window(&0); rv.add_step(500, |l| { let win = TestWindow::freeform(2); l.add_window(win.clone(), Some(ColumnWidth::Proportion(0.3))); - l.layout.start_open_animation_for_window(&win); + l.layout.start_open_animation_for_window(win.id()); }); rv @@ -91,7 +91,7 @@ impl Layout { rv.add_step(delay, move |l| { let win = TestWindow::freeform(delay as usize); l.add_window(win.clone(), Some(ColumnWidth::Proportion(0.3))); - l.layout.start_open_animation_for_window(&win); + l.layout.start_open_animation_for_window(win.id()); }); } @@ -105,7 +105,7 @@ impl Layout { rv.add_step(delay, move |l| { let win = TestWindow::freeform(delay as usize); l.add_window(win.clone(), Some(ColumnWidth::Proportion(0.5))); - l.layout.start_open_animation_for_window(&win); + l.layout.start_open_animation_for_window(win.id()); }); } @@ -122,7 +122,7 @@ impl Layout { let win = TestWindow::freeform(2); let right_of = l.windows[0].clone(); l.add_window_right_of(&right_of, win.clone(), Some(ColumnWidth::Proportion(0.3))); - l.layout.start_open_animation_for_window(&win); + l.layout.start_open_animation_for_window(win.id()); }); rv @@ -138,7 +138,7 @@ impl Layout { let win = TestWindow::freeform(2); let right_of = l.windows[0].clone(); l.add_window_right_of(&right_of, win.clone(), Some(ColumnWidth::Proportion(0.5))); - l.layout.start_open_animation_for_window(&win); + l.layout.start_open_animation_for_window(win.id()); }); rv @@ -147,7 +147,7 @@ impl Layout { fn add_window(&mut self, window: TestWindow, width: Option<ColumnWidth>) { self.layout.add_window(window.clone(), width, false); if window.communicate() { - self.layout.update_window(&window); + self.layout.update_window(window.id()); } self.windows.push(window); } @@ -159,9 +159,9 @@ impl Layout { width: Option<ColumnWidth>, ) { self.layout - .add_window_right_of(right_of, window.clone(), width, false); + .add_window_right_of(right_of.id(), window.clone(), width, false); if window.communicate() { - self.layout.update_window(&window); + self.layout.update_window(window.id()); } self.windows.push(window); } @@ -183,7 +183,7 @@ impl TestCase for Layout { self.layout.update_output_size(&self.output); for win in &self.windows { if win.communicate() { - self.layout.update_window(win); + self.layout.update_window(win.id()); } } } diff --git a/niri-visual-tests/src/test_window.rs b/niri-visual-tests/src/test_window.rs index 7e50023a..a5b10b20 100644 --- a/niri-visual-tests/src/test_window.rs +++ b/niri-visual-tests/src/test_window.rs @@ -12,7 +12,6 @@ use smithay::utils::{Logical, Point, Scale, Size, Transform}; #[derive(Debug)] struct TestWindowInner { - id: usize, size: Size<i32, Logical>, requested_size: Option<Size<i32, Logical>>, min_size: Size<i32, Logical>, @@ -24,7 +23,10 @@ struct TestWindowInner { } #[derive(Debug, Clone)] -pub struct TestWindow(Rc<RefCell<TestWindowInner>>); +pub struct TestWindow { + id: usize, + inner: Rc<RefCell<TestWindowInner>>, +} impl TestWindow { pub fn freeform(id: usize) -> Self { @@ -33,17 +35,19 @@ impl TestWindow { let max_size = Size::from((0, 0)); let buffer = SolidColorBuffer::new(size, [0.15, 0.64, 0.41, 1.]); - Self(Rc::new(RefCell::new(TestWindowInner { + Self { id, - size, - requested_size: None, - min_size, - max_size, - buffer, - pending_fullscreen: false, - csd_shadow_width: 0, - csd_shadow_buffer: SolidColorBuffer::new((0, 0), [0., 0., 0., 0.3]), - }))) + inner: Rc::new(RefCell::new(TestWindowInner { + size, + requested_size: None, + min_size, + max_size, + buffer, + pending_fullscreen: false, + csd_shadow_width: 0, + csd_shadow_buffer: SolidColorBuffer::new((0, 0), [0., 0., 0., 0.3]), + })), + } } pub fn fixed_size(id: usize) -> Self { @@ -56,24 +60,24 @@ impl TestWindow { } pub fn set_min_size(&self, size: Size<i32, Logical>) { - self.0.borrow_mut().min_size = size; + self.inner.borrow_mut().min_size = size; } pub fn set_max_size(&self, size: Size<i32, Logical>) { - self.0.borrow_mut().max_size = size; + self.inner.borrow_mut().max_size = size; } pub fn set_color(&self, color: [f32; 4]) { - self.0.borrow_mut().buffer.set_color(color); + self.inner.borrow_mut().buffer.set_color(color); } pub fn set_csd_shadow_width(&self, width: i32) { - self.0.borrow_mut().csd_shadow_width = width; + self.inner.borrow_mut().csd_shadow_width = width; } pub fn communicate(&self) -> bool { let mut rv = false; - let mut inner = self.0.borrow_mut(); + let mut inner = self.inner.borrow_mut(); let mut new_size = inner.size; @@ -117,15 +121,15 @@ impl TestWindow { } } -impl PartialEq for TestWindow { - fn eq(&self, other: &Self) -> bool { - self.0.borrow().id == other.0.borrow().id +impl LayoutElement for TestWindow { + type Id = usize; + + fn id(&self) -> &Self::Id { + &self.id } -} -impl LayoutElement for TestWindow { fn size(&self) -> Size<i32, Logical> { - self.0.borrow().size + self.inner.borrow().size } fn buf_loc(&self) -> Point<i32, Logical> { @@ -142,7 +146,7 @@ impl LayoutElement for TestWindow { location: Point<i32, Logical>, scale: Scale<f64>, ) -> Vec<LayoutElementRenderElement<R>> { - let inner = self.0.borrow(); + let inner = self.inner.borrow(); vec