shell/tiling: Fix render order

This commit is contained in:
Victoria Brekenfeld 2022-12-15 13:07:25 +01:00
parent 4317c4c5f3
commit 8639546ddb

View file

@ -1155,6 +1155,30 @@ impl TilingLayout {
tree.traverse_pre_order(root) tree.traverse_pre_order(root)
.unwrap() .unwrap()
.filter(|node| node.data().is_mapped(None)) .filter(|node| node.data().is_mapped(None))
.filter(|node| match node.data() {
Data::Mapped { mapped, .. } => mapped.is_activated(),
_ => unreachable!(),
})
.map(|node| match node.data() {
Data::Mapped {
mapped,
last_geometry,
..
} => (
&output_data.output,
mapped,
output_data.location + last_geometry.loc,
),
_ => unreachable!(),
})
.chain(
tree.traverse_pre_order(root)
.unwrap()
.filter(|node| node.data().is_mapped(None))
.filter(|node| match node.data() {
Data::Mapped { mapped, .. } => !mapped.is_activated(),
_ => unreachable!(),
})
.map(|node| match node.data() { .map(|node| match node.data() {
Data::Mapped { Data::Mapped {
mapped, mapped,
@ -1167,6 +1191,7 @@ impl TilingLayout {
), ),
_ => unreachable!(), _ => unreachable!(),
}), }),
),
) )
} else { } else {
None None
@ -1257,11 +1282,32 @@ impl TilingLayout {
if &output_data.output != output { if &output_data.output != output {
return None; return None;
} }
let root = tree.root_node_id()?;
if let Some(root) = tree.root_node_id() {
Some( Some(
tree.traverse_pre_order(root) tree.traverse_pre_order(root)
.unwrap() .unwrap()
.filter(|node| node.data().is_mapped(None)) .filter(|node| node.data().is_mapped(None))
.filter(|node| match node.data() {
Data::Mapped { mapped, .. } => mapped.is_activated(),
_ => unreachable!(),
})
.map(|node| match node.data() {
Data::Mapped {
mapped,
last_geometry,
..
} => (mapped, last_geometry.loc),
_ => unreachable!(),
})
.chain(
tree.traverse_pre_order(root)
.unwrap()
.filter(|node| node.data().is_mapped(None))
.filter(|node| match node.data() {
Data::Mapped { mapped, .. } => !mapped.is_activated(),
_ => unreachable!(),
})
.map(|node| match node.data() { .map(|node| match node.data() {
Data::Mapped { Data::Mapped {
mapped, mapped,
@ -1270,7 +1316,11 @@ impl TilingLayout {
} => (mapped, last_geometry.loc), } => (mapped, last_geometry.loc),
_ => unreachable!(), _ => unreachable!(),
}), }),
),
) )
} else {
None
}
}) })
.flatten() .flatten()
.flat_map(|(mapped, loc)| { .flat_map(|(mapped, loc)| {