aboutsummaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-12-29 07:51:14 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-12-29 07:51:14 +0400
commitd6c553091f037f482f63d8a8afce306b236c404b (patch)
tree62b7cc1d759c48b5036f998971f3444c4f42972b /src/layout
parent097c415036ed63c0736a6434ab9be25fbac042e1 (diff)
downloadniri-d6c553091f037f482f63d8a8afce306b236c404b.tar.gz
niri-d6c553091f037f482f63d8a8afce306b236c404b.tar.bz2
niri-d6c553091f037f482f63d8a8afce306b236c404b.zip
Add focus-column-{first,last}
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/mod.rs18
-rw-r--r--src/layout/monitor.rs8
-rw-r--r--src/layout/workspace.rs12
3 files changed, 38 insertions, 0 deletions
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<W: LayoutElement> Layout<W> {
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<W: LayoutElement> Monitor<W> {
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<W: LayoutElement> Workspace<W> {
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;