tiling: Draw indicators for group lower than pill indicator
This commit is contained in:
parent
b9f321dae3
commit
9a3bfb4bba
1 changed files with 67 additions and 0 deletions
|
|
@ -3177,6 +3177,73 @@ where
|
||||||
.into(),
|
.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if mouse_tiling.is_some()
|
||||||
|
&& node
|
||||||
|
.parent()
|
||||||
|
.map(|parent_id| {
|
||||||
|
matches!(
|
||||||
|
tree.get(&parent_id).unwrap().data(),
|
||||||
|
Data::Group {
|
||||||
|
pill_indicator: Some(_),
|
||||||
|
..
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.unwrap_or(false)
|
||||||
|
{
|
||||||
|
// test if parent pill-indicator is adjacent
|
||||||
|
let parent_id = node.parent().unwrap();
|
||||||
|
let parent = tree.get(parent_id).unwrap();
|
||||||
|
let own_idx = tree
|
||||||
|
.children_ids(parent_id)
|
||||||
|
.unwrap()
|
||||||
|
.position(|child_id| child_id == &node_id)
|
||||||
|
.unwrap();
|
||||||
|
let draw_outline = match parent.data() {
|
||||||
|
Data::Group {
|
||||||
|
pill_indicator,
|
||||||
|
orientation,
|
||||||
|
..
|
||||||
|
} => match pill_indicator {
|
||||||
|
Some(PillIndicator::Inner(pill_idx)) => {
|
||||||
|
*pill_idx == own_idx || pill_idx + 1 == own_idx
|
||||||
|
}
|
||||||
|
Some(PillIndicator::Outer(dir)) => match (dir, orientation)
|
||||||
|
{
|
||||||
|
(Direction::Left, Orientation::Horizontal)
|
||||||
|
| (Direction::Right, Orientation::Horizontal)
|
||||||
|
| (Direction::Up, Orientation::Vertical)
|
||||||
|
| (Direction::Down, Orientation::Vertical) => true,
|
||||||
|
(Direction::Left, Orientation::Vertical)
|
||||||
|
| (Direction::Up, Orientation::Horizontal) => {
|
||||||
|
own_idx == 0
|
||||||
|
}
|
||||||
|
(Direction::Right, Orientation::Vertical)
|
||||||
|
| (Direction::Down, Orientation::Horizontal) => {
|
||||||
|
own_idx + 1 == parent.data().len()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
None => unreachable!(),
|
||||||
|
},
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
|
if draw_outline {
|
||||||
|
elements.push(
|
||||||
|
IndicatorShader::element(
|
||||||
|
*renderer,
|
||||||
|
Key::Group(Arc::downgrade(alive)),
|
||||||
|
geo,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
alpha * 0.15,
|
||||||
|
GROUP_COLOR,
|
||||||
|
)
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
geo.loc += (gap, gap).into();
|
geo.loc += (gap, gap).into();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue