diff options
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/fullscreen.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/tests/fullscreen.rs b/src/tests/fullscreen.rs index f9391ce5..b10a7821 100644 --- a/src/tests/fullscreen.rs +++ b/src/tests/fullscreen.rs @@ -1,5 +1,6 @@ use client::ClientId; use insta::assert_snapshot; +use smithay::utils::Point; use wayland_client::protocol::wl_surface::WlSurface; use super::*; @@ -214,3 +215,43 @@ fn unfullscreen_before_fullscreen_ack_doesnt_prevent_view_offset_save_restore() // The view position should restore to the first window. assert_snapshot!(f.niri().layout.active_workspace().unwrap().scrolling().view_pos(), @"-16"); } + +#[test] +fn interactive_move_unfullscreen_to_scrolling_restores_size() { + let (mut f, id, surface) = set_up(); + + let _ = f.client(id).window(&surface).recent_configures(); + + let niri = f.niri(); + let mapped = niri.layout.windows().next().unwrap().1; + let window = mapped.window.clone(); + niri.layout.set_fullscreen(&window, true); + f.double_roundtrip(id); + + // This should request a fullscreen size. + assert_snapshot!( + f.client(id).window(&surface).format_recent_configures(), + @"size: 1920 × 1080, bounds: 1888 × 1048, states: [Activated, Fullscreen]" + ); + + // Start an interactive move which causes an unfullscreen. + let output = f.niri_output(1); + let niri = f.niri(); + let mapped = niri.layout.windows().next().unwrap().1; + let window = mapped.window.clone(); + niri.layout + .interactive_move_begin(window.clone(), &output, Point::default()); + niri.layout.interactive_move_update( + &window, + Point::from((1000., 0.)), + output, + Point::default(), + ); + f.double_roundtrip(id); + + // This should request the tiled size. + assert_snapshot!( + f.client(id).window(&surface).format_recent_configures(), + @"size: 936 × 1048, bounds: 1920 × 1080, states: [Activated]" + ); +} |
