diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-10-05 08:04:19 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-10-15 09:04:16 +0300 |
| commit | ad3847fad9c8b5ea2c4a3f9def66cd02ffdfd0e2 (patch) | |
| tree | 12e723e003a8f4ed03f4f1cdedb4a675f053582f /src/tests | |
| parent | 9bd860b3935f34442abe37c6171fe300172fc598 (diff) | |
| download | niri-ad3847fad9c8b5ea2c4a3f9def66cd02ffdfd0e2.tar.gz niri-ad3847fad9c8b5ea2c4a3f9def66cd02ffdfd0e2.tar.bz2 niri-ad3847fad9c8b5ea2c4a3f9def66cd02ffdfd0e2.zip | |
layout: Unfullscreen before removing for interactive move
Several reasons for this:
- Remove the sizing code from interactive move duplicated with
toggle_window_floating.
- Make the tiled size restore too instead of requesting 0x0 (which
doesn't work for windows in the Tiled state).
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]" + ); +} |
