fix(wm): check height for cross-monitor focus idx

This commit is an example of how it may be possible to have height-aware
cross-monitor focus movements. I am not able to test this code as I
don't have enough monitors to replicate the issue in #447.

re #447
This commit is contained in:
LGUG2Z
2023-06-26 09:27:45 -07:00
parent 510650cb94
commit 00c63aacba
2 changed files with 13 additions and 3 deletions
+4 -2
View File
@@ -703,10 +703,12 @@ impl WindowManager {
if let Layout::Custom(ref mut custom) = rule.1 { if let Layout::Custom(ref mut custom) = rule.1 {
match sizing { match sizing {
Sizing::Increase => { Sizing::Increase => {
custom.set_primary_width_percentage(percentage + 5.0); custom
.set_primary_width_percentage(percentage + 5.0);
} }
Sizing::Decrease => { Sizing::Decrease => {
custom.set_primary_width_percentage(percentage - 5.0); custom
.set_primary_width_percentage(percentage - 5.0);
} }
} }
} }
+9 -1
View File
@@ -309,12 +309,20 @@ impl WindowManager {
match direction { match direction {
OperationDirection::Left => { OperationDirection::Left => {
if monitor.size().left + monitor.size().right == current_monitor_size.left { if monitor.size().left + monitor.size().right == current_monitor_size.left {
if current_monitor_size.top > monitor.size().bottom {
continue;
}
return Option::from(idx); return Option::from(idx);
} }
} }
OperationDirection::Right => { OperationDirection::Right => {
if current_monitor_size.right + current_monitor_size.left == monitor.size().left if current_monitor_size.right + current_monitor_size.left == monitor.size().left
{ {
if current_monitor_size.top > monitor.size().bottom {
continue;
}
return Option::from(idx); return Option::from(idx);
} }
} }
@@ -1040,7 +1048,7 @@ impl WindowManager {
.get_mut(first_idx) .get_mut(first_idx)
.ok_or_else(|| anyhow!("There is no monitor"))? .ok_or_else(|| anyhow!("There is no monitor"))?
.remove_workspaces(); .remove_workspaces();
let second_workspaces = self let second_workspaces = self
.monitors_mut() .monitors_mut()
.get_mut(second_idx) .get_mut(second_idx)