Menu: unsafe hack to diff children of flattened trees
This commit is contained in:
parent
fb4669591a
commit
6a8447d70f
1 changed files with 9 additions and 5 deletions
|
|
@ -216,20 +216,24 @@ where
|
||||||
tree.children.truncate(self.menu_roots.len());
|
tree.children.truncate(self.menu_roots.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*TODO
|
|
||||||
tree.children
|
tree.children
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.zip(self.menu_roots.iter())
|
.zip(self.menu_roots.iter())
|
||||||
.for_each(|(t, root)| {
|
.for_each(|(t, root)| {
|
||||||
let flat = root
|
let mut flat = root
|
||||||
.flattern()
|
.flattern()
|
||||||
.iter()
|
.iter()
|
||||||
.map(|mt| mt.item.as_widget())
|
.map(|mt| {
|
||||||
|
let widget = mt.item.as_widget();
|
||||||
|
let widget_ptr = widget as *const dyn Widget<Message, Renderer>;
|
||||||
|
let widget_ptr_mut = widget_ptr as *mut dyn Widget<Message, Renderer>;
|
||||||
|
//TODO: find a way to diff_children without unsafe code
|
||||||
|
unsafe { &mut *widget_ptr_mut }
|
||||||
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
t.diff_children(&flat);
|
t.diff_children(flat.as_mut_slice());
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
|
|
||||||
if tree.children.len() < self.menu_roots.len() {
|
if tree.children.len() < self.menu_roots.len() {
|
||||||
let extended = self.menu_roots[tree.children.len()..].iter().map(|root| {
|
let extended = self.menu_roots[tree.children.len()..].iter().map(|root| {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue