aboutsummaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-10-05 08:04:19 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-10-15 09:04:16 +0300
commitad3847fad9c8b5ea2c4a3f9def66cd02ffdfd0e2 (patch)
tree12e723e003a8f4ed03f4f1cdedb4a675f053582f /src/tests
parent9bd860b3935f34442abe37c6171fe300172fc598 (diff)
downloadniri-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.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]"
+ );
+}