diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-09-16 08:25:59 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-09-16 08:35:03 +0300 |
| commit | c30e5c91851d77d48ff2120f0e710501b19d61b4 (patch) | |
| tree | cc7f2439fd0d0bccef5ecb28ce1e8182feb6a184 /src | |
| parent | b2d2a766e48fb4331370c619bd013c50ba75686a (diff) | |
| download | niri-c30e5c91851d77d48ff2120f0e710501b19d61b4.tar.gz niri-c30e5c91851d77d48ff2120f0e710501b19d61b4.tar.bz2 niri-c30e5c91851d77d48ff2120f0e710501b19d61b4.zip | |
layout: End DnD gesture when toggling interactive move to floating
Effective behavior mostly unchanged (it would end on refresh()), but this was
failing the invariant checks.
Diffstat (limited to 'src')
| -rw-r--r-- | src/layout/mod.rs | 5 | ||||
| -rw-r--r-- | src/layout/tests.rs | 29 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 38af83d3..c58fc284 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -3358,6 +3358,11 @@ impl<W: LayoutElement> Layout<W> { 1., self.options.animations.window_movement.0, ); + + // Unlock the view on the workspaces. + for ws in self.workspaces_mut() { + ws.dnd_scroll_gesture_end(); + } } else { // Animate the tile back to semitransparent. move_.tile.animate_alpha( diff --git a/src/layout/tests.rs b/src/layout/tests.rs index beb4b6ee..83cb47c2 100644 --- a/src/layout/tests.rs +++ b/src/layout/tests.rs @@ -2971,6 +2971,35 @@ fn add_window_next_to_only_interactively_moved_without_outputs() { } #[test] +fn interactive_move_toggle_floating_ends_dnd_gesture() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + params: TestWindowParams::new(2), + }, + Op::InteractiveMoveBegin { + window: 2, + output_idx: 1, + px: 0.0, + py: 0.0, + }, + Op::InteractiveMoveUpdate { + window: 2, + dx: 0.0, + dy: 3586.692842955048, + output_idx: 1, + px: 0.0, + py: 0.0, + }, + Op::Refresh { is_active: false }, + Op::ToggleWindowFloating { id: None }, + Op::InteractiveMoveEnd { window: 2 }, + ]; + + check_ops(&ops); +} + +#[test] fn set_width_fixed_negative() { let ops = [ Op::AddOutput(3), |
