diff options
Diffstat (limited to 'src/layout')
| -rw-r--r-- | src/layout/mod.rs | 7 | ||||
| -rw-r--r-- | src/layout/scrolling.rs | 8 | ||||
| -rw-r--r-- | src/layout/tests.rs | 2 | ||||
| -rw-r--r-- | src/layout/workspace.rs | 7 |
4 files changed, 24 insertions, 0 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 11469551..67963f2e 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -1830,6 +1830,13 @@ impl<W: LayoutElement> Layout<W> { true } + pub fn move_column_to_index(&mut self, index: usize) { + let Some(workspace) = self.active_workspace_mut() else { + return; + }; + workspace.move_column_to_index(index); + } + pub fn move_down(&mut self) { let Some(workspace) = self.active_workspace_mut() else { return; diff --git a/src/layout/scrolling.rs b/src/layout/scrolling.rs index cad65881..8659b8f8 100644 --- a/src/layout/scrolling.rs +++ b/src/layout/scrolling.rs @@ -1583,6 +1583,14 @@ impl<W: LayoutElement> ScrollingSpace<W> { self.columns[self.active_column_idx].focus_bottom() } + pub fn move_column_to_index(&mut self, index: usize) { + if self.columns.is_empty() { + return; + } + + self.move_column_to(index.saturating_sub(1).min(self.columns.len() - 1)); + } + fn move_column_to(&mut self, new_idx: usize) { if self.active_column_idx == new_idx { return; diff --git a/src/layout/tests.rs b/src/layout/tests.rs index cfd5d053..29a44877 100644 --- a/src/layout/tests.rs +++ b/src/layout/tests.rs @@ -399,6 +399,7 @@ enum Op { MoveColumnToLast, MoveColumnLeftOrToMonitorLeft(#[proptest(strategy = "1..=2u8")] u8), MoveColumnRightOrToMonitorRight(#[proptest(strategy = "1..=2u8")] u8), + MoveColumnToIndex(#[proptest(strategy = "1..=5usize")] usize), MoveWindowDown, MoveWindowUp, MoveWindowDownOrToWorkspaceDown, @@ -975,6 +976,7 @@ impl Op { layout.move_column_right_or_to_output(&output); } + Op::MoveColumnToIndex(index) => layout.move_column_to_index(index), Op::MoveWindowDown => layout.move_down(), Op::MoveWindowUp => layout.move_up(), Op::MoveWindowDownOrToWorkspaceDown => layout.move_down_or_to_workspace_down(), diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index 08614308..873af715 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -972,6 +972,13 @@ impl<W: LayoutElement> Workspace<W> { self.scrolling.move_column_to_last(); } + pub fn move_column_to_index(&mut self, index: usize) { + if self.floating_is_active.get() { + return; + } + self.scrolling.move_column_to_index(index); + } + pub fn move_down(&mut self) -> bool { if self.floating_is_active.get() { self.floating.move_down(); |
