Add move-column-to-{first,last}

This commit is contained in:
Ivan Molodetskikh
2023-12-29 08:01:02 +04:00
parent 310aa2b464
commit 56174b2c34
6 changed files with 53 additions and 0 deletions
+2
View File
@@ -205,6 +205,8 @@ binds {
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Shift+H { focus-monitor-left; }
Mod+Shift+J { focus-monitor-down; }
+2
View File
@@ -321,6 +321,8 @@ pub enum Action {
FocusWindowOrWorkspaceUp,
MoveColumnLeft,
MoveColumnRight,
MoveColumnToFirst,
MoveColumnToLast,
MoveWindowDown,
MoveWindowUp,
MoveWindowDownOrToWorkspaceDown,
+10
View File
@@ -331,6 +331,16 @@ impl State {
// FIXME: granular
self.niri.queue_redraw_all();
}
Action::MoveColumnToFirst => {
self.niri.layout.move_column_to_first();
// FIXME: granular
self.niri.queue_redraw_all();
}
Action::MoveColumnToLast => {
self.niri.layout.move_column_to_last();
// FIXME: granular
self.niri.queue_redraw_all();
}
Action::MoveWindowDown => {
self.niri.layout.move_down();
// FIXME: granular
+18
View File
@@ -774,6 +774,20 @@ impl<W: LayoutElement> Layout<W> {
monitor.move_right();
}
pub fn move_column_to_first(&mut self) {
let Some(monitor) = self.active_monitor() else {
return;
};
monitor.move_column_to_first();
}
pub fn move_column_to_last(&mut self) {
let Some(monitor) = self.active_monitor() else {
return;
};
monitor.move_column_to_last();
}
pub fn move_down(&mut self) {
let Some(monitor) = self.active_monitor() else {
return;
@@ -1546,6 +1560,8 @@ mod tests {
FocusWindowOrWorkspaceUp,
MoveColumnLeft,
MoveColumnRight,
MoveColumnToFirst,
MoveColumnToLast,
MoveWindowDown,
MoveWindowUp,
MoveWindowDownOrToWorkspaceDown,
@@ -1659,6 +1675,8 @@ mod tests {
Op::FocusWindowOrWorkspaceUp => layout.focus_window_or_workspace_up(),
Op::MoveColumnLeft => layout.move_left(),
Op::MoveColumnRight => layout.move_right(),
Op::MoveColumnToFirst => layout.move_column_to_first(),
Op::MoveColumnToLast => layout.move_column_to_last(),
Op::MoveWindowDown => layout.move_down(),
Op::MoveWindowUp => layout.move_up(),
Op::MoveWindowDownOrToWorkspaceDown => layout.move_down_or_to_workspace_down(),
+8
View File
@@ -152,6 +152,14 @@ impl<W: LayoutElement> Monitor<W> {
self.active_workspace().move_right();
}
pub fn move_column_to_first(&mut self) {
self.active_workspace().move_column_to_first();
}
pub fn move_column_to_last(&mut self) {
self.active_workspace().move_column_to_last();
}
pub fn move_down(&mut self) {
self.active_workspace().move_down();
}
+13
View File
@@ -674,6 +674,19 @@ impl<W: LayoutElement> Workspace<W> {
self.move_column_to(new_idx);
}
pub fn move_column_to_first(&mut self) {
self.move_column_to(0);
}
pub fn move_column_to_last(&mut self) {
if self.columns.is_empty() {
return;
}
let new_idx = self.columns.len() - 1;
self.move_column_to(new_idx);
}
pub fn move_down(&mut self) {
if self.columns.is_empty() {
return;