shell/tiling: Fix render order
This commit is contained in:
parent
4317c4c5f3
commit
8639546ddb
1 changed files with 65 additions and 15 deletions
|
|
@ -1155,6 +1155,10 @@ 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() {
|
.map(|node| match node.data() {
|
||||||
Data::Mapped {
|
Data::Mapped {
|
||||||
mapped,
|
mapped,
|
||||||
|
|
@ -1166,7 +1170,28 @@ impl TilingLayout {
|
||||||
output_data.location + last_geometry.loc,
|
output_data.location + last_geometry.loc,
|
||||||
),
|
),
|
||||||
_ => unreachable!(),
|
_ => 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() {
|
||||||
|
Data::Mapped {
|
||||||
|
mapped,
|
||||||
|
last_geometry,
|
||||||
|
..
|
||||||
|
} => (
|
||||||
|
&output_data.output,
|
||||||
|
mapped,
|
||||||
|
output_data.location + last_geometry.loc,
|
||||||
|
),
|
||||||
|
_ => unreachable!(),
|
||||||
|
}),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
|
@ -1257,20 +1282,45 @@ impl TilingLayout {
|
||||||
if &output_data.output != output {
|
if &output_data.output != output {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let root = tree.root_node_id()?;
|
|
||||||
Some(
|
if let Some(root) = tree.root_node_id() {
|
||||||
tree.traverse_pre_order(root)
|
Some(
|
||||||
.unwrap()
|
tree.traverse_pre_order(root)
|
||||||
.filter(|node| node.data().is_mapped(None))
|
.unwrap()
|
||||||
.map(|node| match node.data() {
|
.filter(|node| node.data().is_mapped(None))
|
||||||
Data::Mapped {
|
.filter(|node| match node.data() {
|
||||||
mapped,
|
Data::Mapped { mapped, .. } => mapped.is_activated(),
|
||||||
last_geometry,
|
_ => unreachable!(),
|
||||||
..
|
})
|
||||||
} => (mapped, last_geometry.loc),
|
.map(|node| match node.data() {
|
||||||
_ => unreachable!(),
|
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() {
|
||||||
|
Data::Mapped {
|
||||||
|
mapped,
|
||||||
|
last_geometry,
|
||||||
|
..
|
||||||
|
} => (mapped, last_geometry.loc),
|
||||||
|
_ => unreachable!(),
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
.flatten()
|
||||||
.flat_map(|(mapped, loc)| {
|
.flat_map(|(mapped, loc)| {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue