aboutsummaryrefslogtreecommitdiff
path: root/src/layout/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout/mod.rs')
-rw-r--r--src/layout/mod.rs30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs
index ea29311e..5ab81f03 100644
--- a/src/layout/mod.rs
+++ b/src/layout/mod.rs
@@ -1951,11 +1951,21 @@ impl<W: LayoutElement> Layout<W> {
monitor.toggle_width();
}
- pub fn toggle_window_height(&mut self) {
- let Some(monitor) = self.active_monitor() else {
+ pub fn toggle_window_height(&mut self, window: Option<&W::Id>) {
+ let workspace = if let Some(window) = window {
+ Some(
+ self.workspaces_mut()
+ .find(|ws| ws.has_window(window))
+ .unwrap(),
+ )
+ } else {
+ self.active_workspace_mut()
+ };
+
+ let Some(workspace) = workspace else {
return;
};
- monitor.toggle_window_height();
+ workspace.toggle_window_height(window);
}
pub fn toggle_full_width(&mut self) {
@@ -3048,7 +3058,10 @@ mod tests {
},
MoveColumnToOutput(#[proptest(strategy = "1..=5u8")] u8),
SwitchPresetColumnWidth,
- SwitchPresetWindowHeight,
+ SwitchPresetWindowHeight {
+ #[proptest(strategy = "proptest::option::of(1..=5usize)")]
+ id: Option<usize>,
+ },
MaximizeColumn,
SetColumnWidth(#[proptest(strategy = "arbitrary_size_change()")] SizeChange),
SetWindowHeight {
@@ -3475,7 +3488,10 @@ mod tests {
Op::MoveWorkspaceDown => layout.move_workspace_down(),
Op::MoveWorkspaceUp => layout.move_workspace_up(),
Op::SwitchPresetColumnWidth => layout.toggle_width(),
- Op::SwitchPresetWindowHeight => layout.toggle_window_height(),
+ Op::SwitchPresetWindowHeight { id } => {
+ let id = id.filter(|id| layout.has_window(id));
+ layout.toggle_window_height(id.as_ref());
+ }
Op::MaximizeColumn => layout.toggle_full_width(),
Op::SetColumnWidth(change) => layout.set_column_width(change),
Op::SetWindowHeight { id, change } => {
@@ -4458,8 +4474,8 @@ mod tests {
min_max_size: Default::default(),
},
Op::ConsumeOrExpelWindowLeft,
- Op::SwitchPresetWindowHeight,
- Op::SwitchPresetWindowHeight,
+ Op::SwitchPresetWindowHeight { id: None },
+ Op::SwitchPresetWindowHeight { id: None },
];
for op in ops {
op.apply(&mut layout);