mirror of
https://github.com/YaLTeR/niri.git
synced 2025-10-06 00:23:14 +02:00
layout/tests: Extract fullscreen tests to submodule
This commit is contained in:
@@ -12,6 +12,7 @@ use smithay::utils::Rectangle;
|
||||
use super::*;
|
||||
|
||||
mod animations;
|
||||
mod fullscreen;
|
||||
|
||||
impl<W: LayoutElement> Default for Layout<W> {
|
||||
fn default() -> Self {
|
||||
@@ -2185,39 +2186,6 @@ fn move_workspace_to_output() {
|
||||
assert!(monitors[1].workspaces[0].has_windows());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_window_in_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::SetFullscreenWindow {
|
||||
window: 2,
|
||||
is_fullscreen: false,
|
||||
},
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn open_right_of_on_different_workspace() {
|
||||
let ops = [
|
||||
@@ -2293,95 +2261,6 @@ fn open_right_of_on_different_workspace_ewaf() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_removal() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowRight { id: None },
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_consume() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeWindowIntoColumn,
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_quick_double_toggle() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::FullscreenWindow(0),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_set_on_fullscreening_inactive_tile_in_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::FullscreenWindow(0),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
Op::ViewOffsetGestureBegin {
|
||||
output_idx: 1,
|
||||
workspace_idx: None,
|
||||
is_touchpad: true,
|
||||
},
|
||||
Op::ViewOffsetGestureEnd {
|
||||
is_touchpad: Some(true),
|
||||
},
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn removing_all_outputs_preserves_empty_named_workspaces() {
|
||||
let ops = [
|
||||
@@ -2521,39 +2400,6 @@ fn one_window_in_column_becomes_weight_1() {
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn one_window_in_column_becomes_weight_1_after_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::SetWindowHeight {
|
||||
id: None,
|
||||
change: SizeChange::SetFixed(100),
|
||||
},
|
||||
Op::Communicate(2),
|
||||
Op::FocusWindowUp,
|
||||
Op::SetWindowHeight {
|
||||
id: None,
|
||||
change: SizeChange::SetFixed(200),
|
||||
},
|
||||
Op::Communicate(1),
|
||||
Op::CloseWindow(0),
|
||||
Op::FullscreenWindow(1),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fixed_height_takes_max_non_auto_into_account() {
|
||||
let ops = [
|
||||
@@ -3364,146 +3210,6 @@ fn preset_column_width_reset_after_set_width() {
|
||||
assert_eq!(win.requested_size().unwrap().w, 500);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn disable_tabbed_mode_in_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::ToggleColumnTabbedDisplay,
|
||||
Op::FullscreenWindow(0),
|
||||
Op::ToggleColumnTabbedDisplay,
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_with_large_border() {
|
||||
let ops = [
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::Communicate(0),
|
||||
Op::FullscreenWindow(0),
|
||||
];
|
||||
|
||||
let options = Options {
|
||||
border: niri_config::Border {
|
||||
off: false,
|
||||
width: niri_config::FloatOrInt(10000.),
|
||||
..Default::default()
|
||||
},
|
||||
..Default::default()
|
||||
};
|
||||
check_ops_with_options(options, &ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fullscreen_to_windowed_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::Communicate(0), // Make sure it goes into fullscreen.
|
||||
Op::ToggleWindowedFullscreen(0),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn windowed_fullscreen_to_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::Communicate(0), // Commit fullscreen state.
|
||||
Op::ToggleWindowedFullscreen(0), // Switch is_fullscreen() to false.
|
||||
Op::FullscreenWindow(0), // Switch is_fullscreen() back to true.
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_pending_unfullscreen_window_out_of_active_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
Op::Communicate(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeWindowIntoColumn,
|
||||
// Window 1 is now pending unfullscreen.
|
||||
// Moving it out should reset view_offset_before_fullscreen.
|
||||
Op::MoveWindowToWorkspaceDown(true),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_unfocused_pending_unfullscreen_window_out_of_active_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
Op::Communicate(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeWindowIntoColumn,
|
||||
// Window 1 is now pending unfullscreen.
|
||||
// Moving it out should reset view_offset_before_fullscreen.
|
||||
Op::FocusWindowDown,
|
||||
Op::MoveWindowToWorkspace {
|
||||
window_id: Some(1),
|
||||
workspace_idx: 1,
|
||||
},
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn interactive_resize_on_pending_unfullscreen_column() {
|
||||
let ops = [
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::FullscreenWindow(2),
|
||||
Op::Communicate(2),
|
||||
Op::SetFullscreenWindow {
|
||||
window: 2,
|
||||
is_fullscreen: false,
|
||||
},
|
||||
Op::InteractiveResizeBegin {
|
||||
window: 2,
|
||||
edges: ResizeEdge::RIGHT,
|
||||
},
|
||||
Op::Communicate(2),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_column_to_workspace_unfocused_with_multiple_monitors() {
|
||||
let ops = [
|
||||
@@ -3567,107 +3273,6 @@ fn move_column_to_workspace_unfocused_with_multiple_monitors() {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn interactive_move_unfullscreen_to_floating_stops_dnd_scroll() {
|
||||
let ops = [
|
||||
Op::AddOutput(3),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams {
|
||||
is_floating: true,
|
||||
..TestWindowParams::new(4)
|
||||
},
|
||||
},
|
||||
// This moves the window to tiling.
|
||||
Op::SetFullscreenWindow {
|
||||
window: 4,
|
||||
is_fullscreen: true,
|
||||
},
|
||||
// This starts a DnD scroll since we're dragging a tiled window.
|
||||
Op::InteractiveMoveBegin {
|
||||
window: 4,
|
||||
output_idx: 3,
|
||||
px: 0.0,
|
||||
py: 0.0,
|
||||
},
|
||||
// This will cause the window to unfullscreen to floating, and should stop the DnD scroll
|
||||
// since we're no longer dragging a tiled window, but rather a floating one.
|
||||
Op::InteractiveMoveUpdate {
|
||||
window: 4,
|
||||
dx: 0.0,
|
||||
dy: 15035.31210741684,
|
||||
output_idx: 3,
|
||||
px: 0.0,
|
||||
py: 0.0,
|
||||
},
|
||||
Op::InteractiveMoveEnd { window: 4 },
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_during_dnd_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(3),
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
Op::DndUpdate {
|
||||
output_idx: 1,
|
||||
px: 0.0,
|
||||
py: 0.0,
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_during_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(3),
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
Op::ViewOffsetGestureBegin {
|
||||
output_idx: 1,
|
||||
workspace_idx: None,
|
||||
is_touchpad: false,
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_during_ongoing_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(3),
|
||||
},
|
||||
Op::ViewOffsetGestureBegin {
|
||||
output_idx: 1,
|
||||
workspace_idx: None,
|
||||
is_touchpad: false,
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_column_to_workspace_down_focus_false_on_floating_window() {
|
||||
let ops = [
|
||||
|
397
src/layout/tests/fullscreen.rs
Normal file
397
src/layout/tests/fullscreen.rs
Normal file
@@ -0,0 +1,397 @@
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_window_in_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::SetFullscreenWindow {
|
||||
window: 2,
|
||||
is_fullscreen: false,
|
||||
},
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_removal() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowRight { id: None },
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_consume() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeWindowIntoColumn,
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_quick_double_toggle() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::FullscreenWindow(0),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_set_on_fullscreening_inactive_tile_in_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::FullscreenWindow(0),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_on_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
Op::ViewOffsetGestureBegin {
|
||||
output_idx: 1,
|
||||
workspace_idx: None,
|
||||
is_touchpad: true,
|
||||
},
|
||||
Op::ViewOffsetGestureEnd {
|
||||
is_touchpad: Some(true),
|
||||
},
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn one_window_in_column_becomes_weight_1_after_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::SetWindowHeight {
|
||||
id: None,
|
||||
change: SizeChange::SetFixed(100),
|
||||
},
|
||||
Op::Communicate(2),
|
||||
Op::FocusWindowUp,
|
||||
Op::SetWindowHeight {
|
||||
id: None,
|
||||
change: SizeChange::SetFixed(200),
|
||||
},
|
||||
Op::Communicate(1),
|
||||
Op::CloseWindow(0),
|
||||
Op::FullscreenWindow(1),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn disable_tabbed_mode_in_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::ConsumeOrExpelWindowLeft { id: None },
|
||||
Op::ToggleColumnTabbedDisplay,
|
||||
Op::FullscreenWindow(0),
|
||||
Op::ToggleColumnTabbedDisplay,
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_with_large_border() {
|
||||
let ops = [
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::Communicate(0),
|
||||
Op::FullscreenWindow(0),
|
||||
];
|
||||
|
||||
let options = Options {
|
||||
border: niri_config::Border {
|
||||
off: false,
|
||||
width: niri_config::FloatOrInt(10000.),
|
||||
..Default::default()
|
||||
},
|
||||
..Default::default()
|
||||
};
|
||||
check_ops_with_options(options, &ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fullscreen_to_windowed_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::Communicate(0), // Make sure it goes into fullscreen.
|
||||
Op::ToggleWindowedFullscreen(0),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn windowed_fullscreen_to_fullscreen() {
|
||||
let ops = [
|
||||
Op::AddOutput(0),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(0),
|
||||
},
|
||||
Op::FullscreenWindow(0),
|
||||
Op::Communicate(0), // Commit fullscreen state.
|
||||
Op::ToggleWindowedFullscreen(0), // Switch is_fullscreen() to false.
|
||||
Op::FullscreenWindow(0), // Switch is_fullscreen() back to true.
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_pending_unfullscreen_window_out_of_active_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
Op::Communicate(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeWindowIntoColumn,
|
||||
// Window 1 is now pending unfullscreen.
|
||||
// Moving it out should reset view_offset_before_fullscreen.
|
||||
Op::MoveWindowToWorkspaceDown(true),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_unfocused_pending_unfullscreen_window_out_of_active_column() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(1),
|
||||
},
|
||||
Op::FullscreenWindow(1),
|
||||
Op::Communicate(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::ConsumeWindowIntoColumn,
|
||||
// Window 1 is now pending unfullscreen.
|
||||
// Moving it out should reset view_offset_before_fullscreen.
|
||||
Op::FocusWindowDown,
|
||||
Op::MoveWindowToWorkspace {
|
||||
window_id: Some(1),
|
||||
workspace_idx: 1,
|
||||
},
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn interactive_resize_on_pending_unfullscreen_column() {
|
||||
let ops = [
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(2),
|
||||
},
|
||||
Op::FullscreenWindow(2),
|
||||
Op::Communicate(2),
|
||||
Op::SetFullscreenWindow {
|
||||
window: 2,
|
||||
is_fullscreen: false,
|
||||
},
|
||||
Op::InteractiveResizeBegin {
|
||||
window: 2,
|
||||
edges: ResizeEdge::RIGHT,
|
||||
},
|
||||
Op::Communicate(2),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn interactive_move_unfullscreen_to_floating_stops_dnd_scroll() {
|
||||
let ops = [
|
||||
Op::AddOutput(3),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams {
|
||||
is_floating: true,
|
||||
..TestWindowParams::new(4)
|
||||
},
|
||||
},
|
||||
// This moves the window to tiling.
|
||||
Op::SetFullscreenWindow {
|
||||
window: 4,
|
||||
is_fullscreen: true,
|
||||
},
|
||||
// This starts a DnD scroll since we're dragging a tiled window.
|
||||
Op::InteractiveMoveBegin {
|
||||
window: 4,
|
||||
output_idx: 3,
|
||||
px: 0.0,
|
||||
py: 0.0,
|
||||
},
|
||||
// This will cause the window to unfullscreen to floating, and should stop the DnD scroll
|
||||
// since we're no longer dragging a tiled window, but rather a floating one.
|
||||
Op::InteractiveMoveUpdate {
|
||||
window: 4,
|
||||
dx: 0.0,
|
||||
dy: 15035.31210741684,
|
||||
output_idx: 3,
|
||||
px: 0.0,
|
||||
py: 0.0,
|
||||
},
|
||||
Op::InteractiveMoveEnd { window: 4 },
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_during_dnd_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(3),
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
Op::DndUpdate {
|
||||
output_idx: 1,
|
||||
px: 0.0,
|
||||
py: 0.0,
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_during_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(3),
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
Op::ViewOffsetGestureBegin {
|
||||
output_idx: 1,
|
||||
workspace_idx: None,
|
||||
is_touchpad: false,
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unfullscreen_view_offset_not_reset_during_ongoing_gesture() {
|
||||
let ops = [
|
||||
Op::AddOutput(1),
|
||||
Op::AddWindow {
|
||||
params: TestWindowParams::new(3),
|
||||
},
|
||||
Op::ViewOffsetGestureBegin {
|
||||
output_idx: 1,
|
||||
workspace_idx: None,
|
||||
is_touchpad: false,
|
||||
},
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
Op::FullscreenWindow(3),
|
||||
Op::Communicate(3),
|
||||
];
|
||||
|
||||
check_ops(&ops);
|
||||
}
|
Reference in New Issue
Block a user