aboutsummaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/fullscreen.rs41
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]"
+ );
+}