From d6c553091f037f482f63d8a8afce306b236c404b Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Fri, 29 Dec 2023 07:51:14 +0400 Subject: Add focus-column-{first,last} --- src/layout/mod.rs | 18 ++++++++++++++++++ src/layout/monitor.rs | 8 ++++++++ src/layout/workspace.rs | 12 ++++++++++++ 3 files changed, 38 insertions(+) (limited to 'src/layout') diff --git a/src/layout/mod.rs b/src/layout/mod.rs index c60211a3..02287db6 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -816,6 +816,20 @@ impl Layout { monitor.focus_right(); } + pub fn focus_column_first(&mut self) { + let Some(monitor) = self.active_monitor() else { + return; + }; + monitor.focus_column_first(); + } + + pub fn focus_column_last(&mut self) { + let Some(monitor) = self.active_monitor() else { + return; + }; + monitor.focus_column_last(); + } + pub fn focus_down(&mut self) { let Some(monitor) = self.active_monitor() else { return; @@ -1524,6 +1538,8 @@ mod tests { FullscreenWindow(#[proptest(strategy = "1..=5usize")] usize), FocusColumnLeft, FocusColumnRight, + FocusColumnFirst, + FocusColumnLast, FocusWindowDown, FocusWindowUp, FocusWindowOrWorkspaceDown, @@ -1635,6 +1651,8 @@ mod tests { } Op::FocusColumnLeft => layout.focus_left(), Op::FocusColumnRight => layout.focus_right(), + Op::FocusColumnFirst => layout.focus_column_first(), + Op::FocusColumnLast => layout.focus_column_last(), Op::FocusWindowDown => layout.focus_down(), Op::FocusWindowUp => layout.focus_up(), Op::FocusWindowOrWorkspaceDown => layout.focus_window_or_workspace_down(), diff --git a/src/layout/monitor.rs b/src/layout/monitor.rs index aa4c439e..28d7921e 100644 --- a/src/layout/monitor.rs +++ b/src/layout/monitor.rs @@ -197,6 +197,14 @@ impl Monitor { self.active_workspace().focus_right(); } + pub fn focus_column_first(&mut self) { + self.active_workspace().focus_column_first(); + } + + pub fn focus_column_last(&mut self) { + self.active_workspace().focus_column_last(); + } + pub fn focus_down(&mut self) { self.active_workspace().focus_down(); } diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index aa00b348..d496cd69 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -617,6 +617,18 @@ impl Workspace { self.activate_column(min(self.active_column_idx + 1, self.columns.len() - 1)); } + pub fn focus_column_first(&mut self) { + self.activate_column(0); + } + + pub fn focus_column_last(&mut self) { + if self.columns.is_empty() { + return; + } + + self.activate_column(self.columns.len() - 1); + } + pub fn focus_down(&mut self) { if self.columns.is_empty() { return; -- cgit