From 98244b957218e7955fbd23653603685c121dfa53 Mon Sep 17 00:00:00 2001
From: Javier Portillo <17260001+javierportillo@users.noreply.github.com>
Date: Tue, 20 Feb 2024 14:41:41 -0600
Subject: [PATCH] feat(wm): passes optional op_direction and count to
_index functions
---
komorebi-core/src/direction.rs | 45 ++++++++++++++++++----------------
1 file changed, 24 insertions(+), 21 deletions(-)
diff --git a/komorebi-core/src/direction.rs b/komorebi-core/src/direction.rs
index 653675b6..e70b0d08 100644
--- a/komorebi-core/src/direction.rs
+++ b/komorebi-core/src/direction.rs
@@ -19,10 +19,10 @@ pub trait Direction {
idx: usize,
count: usize,
) -> bool;
- fn up_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize;
- fn down_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize;
- fn left_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize;
- fn right_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize;
+ fn up_index(&self, op_direction: Option, idx: usize, count: Option) -> usize;
+ fn down_index(&self, op_direction: Option, idx: usize, count: Option) -> usize;
+ fn left_index(&self, op_direction: Option, idx: usize, count: Option) -> usize;
+ fn right_index(&self, op_direction: Option, idx: usize, count: Option) -> usize;
}
impl Direction for DefaultLayout {
@@ -35,28 +35,28 @@ impl Direction for DefaultLayout {
match op_direction {
OperationDirection::Left => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.left_index(op_direction, idx, count))
+ Option::from(self.left_index(Some(op_direction), idx, Some(count)))
} else {
None
}
}
OperationDirection::Right => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.right_index(op_direction, idx, count))
+ Option::from(self.right_index(Some(op_direction), idx, Some(count)))
} else {
None
}
}
OperationDirection::Up => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.up_index(op_direction, idx, count))
+ Option::from(self.up_index(Some(op_direction), idx, Some(count)))
} else {
None
}
}
OperationDirection::Down => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.down_index(op_direction, idx, count))
+ Option::from(self.down_index(Some(op_direction), idx, Some(count)))
} else {
None
}
@@ -112,7 +112,7 @@ impl Direction for DefaultLayout {
}
}
- fn up_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize {
+ fn up_index(&self, op_direction: Option, idx: usize, count: Option) -> usize {
match self {
Self::BSP => {
if idx % 2 == 0 {
@@ -128,7 +128,7 @@ impl Direction for DefaultLayout {
}
}
- fn down_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize {
+ fn down_index(&self, op_direction: Option, idx: usize, count: Option) -> usize {
match self {
Self::BSP | Self::Rows | Self::VerticalStack | Self::UltrawideVerticalStack => idx + 1,
Self::Columns => unreachable!(),
@@ -137,7 +137,7 @@ impl Direction for DefaultLayout {
}
}
- fn left_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize {
+ fn left_index(&self, op_direction: Option, idx: usize, count: Option) -> usize {
match self {
Self::BSP => {
if idx % 2 == 0 {
@@ -158,7 +158,7 @@ impl Direction for DefaultLayout {
}
}
- fn right_index(&self, op_direction: OperationDirection, idx: usize, count: usize) -> usize {
+ fn right_index(&self, op_direction: Option, idx: usize, count: Option) -> usize {
match self {
Self::BSP | Self::Columns | Self::HorizontalStack => idx + 1,
Self::Rows => unreachable!(),
@@ -248,7 +248,10 @@ fn is_grid_edge(op_direction: OperationDirection, idx: usize, count: usize) -> b
}
}
-fn grid_neighbor(op_direction: OperationDirection, idx: usize, count: usize) -> usize {
+fn grid_neighbor(op_direction: Option, idx: usize, count: Option) -> usize {
+ let op_direction = if let Some(dir) = op_direction { dir } else { return 0; };
+ let count = if let Some(count) = count { count } else { return 0; };
+
let item = get_grid_item(idx, count);
match op_direction {
@@ -285,28 +288,28 @@ impl Direction for CustomLayout {
match op_direction {
OperationDirection::Left => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.left_index(op_direction, idx, count))
+ Option::from(self.left_index(None, idx, None))
} else {
None
}
}
OperationDirection::Right => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.right_index(op_direction, idx, count))
+ Option::from(self.right_index(None, idx, None))
} else {
None
}
}
OperationDirection::Up => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.up_index(op_direction, idx, count))
+ Option::from(self.up_index(None, idx, None))
} else {
None
}
}
OperationDirection::Down => {
if self.is_valid_direction(op_direction, idx, count) {
- Option::from(self.down_index(op_direction, idx, count))
+ Option::from(self.down_index(None, idx, None))
} else {
None
}
@@ -360,15 +363,15 @@ impl Direction for CustomLayout {
}
}
- fn up_index(&self, _op_direction: OperationDirection, idx: usize, _count: usize) -> usize {
+ fn up_index(&self, _op_direction: Option, idx: usize, _count: Option) -> usize {
idx - 1
}
- fn down_index(&self, _op_direction: OperationDirection, idx: usize, _count: usize) -> usize {
+ fn down_index(&self, _op_direction: Option, idx: usize, _count: Option) -> usize {
idx + 1
}
- fn left_index(&self, _op_direction: OperationDirection, idx: usize, _count: usize) -> usize {
+ fn left_index(&self, _op_direction: Option, idx: usize, _count: Option) -> usize {
let column_idx = self.column_for_container_idx(idx);
if column_idx - 1 == 0 {
0
@@ -377,7 +380,7 @@ impl Direction for CustomLayout {
}
}
- fn right_index(&self, _op_direction: OperationDirection, idx: usize, _count: usize) -> usize {
+ fn right_index(&self, _op_direction: Option, idx: usize, _count: Option) -> usize {
let column_idx = self.column_for_container_idx(idx);
self.first_container_idx(column_idx + 1)
}