mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-04-25 01:58:51 +02:00
feat(wm): add granular directional monitor idx detection
This commit is contained in:
@@ -468,23 +468,39 @@ impl WindowManager {
|
|||||||
for (idx, monitor) in self.monitors.elements().iter().enumerate() {
|
for (idx, monitor) in self.monitors.elements().iter().enumerate() {
|
||||||
match direction {
|
match direction {
|
||||||
OperationDirection::Left => {
|
OperationDirection::Left => {
|
||||||
if monitor.size().left + monitor.size().right == current_monitor_size.left {
|
if monitor.size().right <= current_monitor_size.left
|
||||||
|
&& monitor.size().top < current_monitor_size.bottom
|
||||||
|
&& monitor.size().bottom > current_monitor_size.top
|
||||||
|
|| monitor.size().left + monitor.size().right == current_monitor_size.left
|
||||||
|
{
|
||||||
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 monitor.size().left >= current_monitor_size.right
|
||||||
|
&& monitor.size().top < current_monitor_size.bottom
|
||||||
|
&& monitor.size().bottom > current_monitor_size.top
|
||||||
|
|| current_monitor_size.right + current_monitor_size.left
|
||||||
|
== monitor.size().left
|
||||||
{
|
{
|
||||||
return Option::from(idx);
|
return Option::from(idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OperationDirection::Up => {
|
OperationDirection::Up => {
|
||||||
if monitor.size().top + monitor.size().bottom == current_monitor_size.top {
|
if monitor.size().bottom <= current_monitor_size.top
|
||||||
|
&& monitor.size().left < current_monitor_size.right
|
||||||
|
&& monitor.size().right > current_monitor_size.left
|
||||||
|
|| monitor.size().top + monitor.size().bottom == current_monitor_size.top
|
||||||
|
{
|
||||||
return Option::from(idx);
|
return Option::from(idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OperationDirection::Down => {
|
OperationDirection::Down => {
|
||||||
if current_monitor_size.top + current_monitor_size.bottom == monitor.size().top
|
if monitor.size().top >= current_monitor_size.bottom
|
||||||
|
&& monitor.size().left < current_monitor_size.right
|
||||||
|
&& monitor.size().right > current_monitor_size.left
|
||||||
|
|| current_monitor_size.top + current_monitor_size.bottom
|
||||||
|
== monitor.size().top
|
||||||
{
|
{
|
||||||
return Option::from(idx);
|
return Option::from(idx);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user