mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-05-16 16:57:02 +02:00
fix(wm): allow resize-axis on custom layout rule
This commit ensures that a custom layout that is set by a layout rule will correctly have the width of the primary column increased or decreased when resize-axis is called with Axis::Horizontal. re #154
This commit is contained in:
@@ -378,15 +378,40 @@ impl WindowManager {
|
|||||||
SocketMessage::ResizeWindowAxis(axis, sizing) => {
|
SocketMessage::ResizeWindowAxis(axis, sizing) => {
|
||||||
// If the user has a custom layout, allow for the resizing of the primary column
|
// If the user has a custom layout, allow for the resizing of the primary column
|
||||||
// with this signal
|
// with this signal
|
||||||
if let Layout::Custom(ref mut custom) = self.focused_workspace_mut()?.layout_mut() {
|
let workspace = self.focused_workspace_mut()?;
|
||||||
|
let container_len = workspace.containers().len();
|
||||||
|
let has_layout_rules = workspace.layout_rules().is_empty();
|
||||||
|
|
||||||
|
if let Layout::Custom(ref mut custom) = workspace.layout_mut() {
|
||||||
if matches!(axis, Axis::Horizontal) {
|
if matches!(axis, Axis::Horizontal) {
|
||||||
let percentage = custom
|
let percentage = custom
|
||||||
.primary_width_percentage()
|
.primary_width_percentage()
|
||||||
.unwrap_or(100 / custom.len());
|
.unwrap_or(100 / custom.len());
|
||||||
|
|
||||||
match sizing {
|
if has_layout_rules {
|
||||||
Sizing::Increase => custom.set_primary_width_percentage(percentage + 5),
|
match sizing {
|
||||||
Sizing::Decrease => custom.set_primary_width_percentage(percentage - 5),
|
Sizing::Increase => {
|
||||||
|
custom.set_primary_width_percentage(percentage + 5);
|
||||||
|
}
|
||||||
|
Sizing::Decrease => {
|
||||||
|
custom.set_primary_width_percentage(percentage - 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for rule in workspace.layout_rules_mut() {
|
||||||
|
if container_len >= rule.0 {
|
||||||
|
if let Layout::Custom(ref mut custom) = rule.1 {
|
||||||
|
match sizing {
|
||||||
|
Sizing::Increase => {
|
||||||
|
custom.set_primary_width_percentage(percentage + 5);
|
||||||
|
}
|
||||||
|
Sizing::Decrease => {
|
||||||
|
custom.set_primary_width_percentage(percentage - 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Otherwise proceed with the resizing logic for individual window containers in the
|
// Otherwise proceed with the resizing logic for individual window containers in the
|
||||||
|
|||||||
Reference in New Issue
Block a user