aboutsummaryrefslogtreecommitdiff
path: root/src/layout/mod.rs
diff options
context:
space:
mode:
authorAberter Yan <aberter0x3f@disroot.org>2025-05-01 20:36:33 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-05-01 11:06:34 -0700
commiteb590c53460c24a23024db192a3132687aabc06d (patch)
treed0a8f4171c7b6c9b9d009e2175cfe97bcffee703 /src/layout/mod.rs
parent02baad91aca414a9adb9e77b4967d63bb366fb1b (diff)
downloadniri-eb590c53460c24a23024db192a3132687aabc06d.tar.gz
niri-eb590c53460c24a23024db192a3132687aabc06d.tar.bz2
niri-eb590c53460c24a23024db192a3132687aabc06d.zip
Implement --focus for MoveColumnToWorkspace/Up/Down
Diffstat (limited to 'src/layout/mod.rs')
-rw-r--r--src/layout/mod.rs35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs
index 1906acd0..d42f05a5 100644
--- a/src/layout/mod.rs
+++ b/src/layout/mod.rs
@@ -1888,7 +1888,7 @@ impl<W: LayoutElement> Layout<W> {
}
}
- self.move_column_to_output(output);
+ self.move_column_to_output(output, None, true);
true
}
@@ -1899,7 +1899,7 @@ impl<W: LayoutElement> Layout<W> {
}
}
- self.move_column_to_output(output);
+ self.move_column_to_output(output, None, true);
true
}
@@ -2213,31 +2213,25 @@ impl<W: LayoutElement> Layout<W> {
monitor.move_to_workspace(window, idx, activate);
}
- pub fn move_column_to_workspace_up(&mut self) {
+ pub fn move_column_to_workspace_up(&mut self, activate: bool) {
let Some(monitor) = self.active_monitor() else {
return;
};
- monitor.move_column_to_workspace_up();
+ monitor.move_column_to_workspace_up(activate);
}
- pub fn move_column_to_workspace_down(&mut self) {
+ pub fn move_column_to_workspace_down(&mut self, activate: bool) {
let Some(monitor) = self.active_monitor() else {
return;
};
- monitor.move_column_to_workspace_down();
+ monitor.move_column_to_workspace_down(activate);
}
- pub fn move_column_to_workspace(&mut self, idx: usize) {
+ pub fn move_column_to_workspace(&mut self, idx: usize, activate: bool) {
let Some(monitor) = self.active_monitor() else {
return;
};
- monitor.move_column_to_workspace(idx);
- }
-
- pub fn move_column_to_workspace_on_output(&mut self, output: &Output, idx: usize) {
- self.move_column_to_output(output);
- self.focus_output(output);
- self.move_column_to_workspace(idx);
+ monitor.move_column_to_workspace(idx, activate);
}
pub fn switch_workspace_up(&mut self) {
@@ -3559,7 +3553,12 @@ impl<W: LayoutElement> Layout<W> {
}
}
- pub fn move_column_to_output(&mut self, output: &Output) {
+ pub fn move_column_to_output(
+ &mut self,
+ output: &Output,
+ target_ws_idx: Option<usize>,
+ activate: bool,
+ ) {
if let MonitorSet::Normal {
monitors,
active_monitor_idx,
@@ -3583,8 +3582,10 @@ impl<W: LayoutElement> Layout<W> {
return;
};
- let workspace_idx = monitors[new_idx].active_workspace_idx;
- self.add_column_by_idx(new_idx, workspace_idx, column, true);
+ let workspace_idx = target_ws_idx
+ .unwrap_or(monitors[new_idx].active_workspace_idx)
+ .min(monitors[new_idx].workspaces.len() - 1);
+ self.add_column_by_idx(new_idx, workspace_idx, column, activate);
}
}