aboutsummaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/mod.rs5
-rw-r--r--src/layout/tests.rs29
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),