drop scopes in order when dropping the virtual dom
This commit is contained in:
1 parent
94c0c2e5b9
commit
c172914b21
2 files changed
+7
-3
No files matched your search
@@ -64,7 +64,7 @@ impl VirtualDom {
|
||||
self.elements.try_remove(el.0).map(|_| ())
|
||||
}
|
||||
|
||||
// Drop a scope and all its children
|
||||
// Drop a scope without dropping its children
|
||||
//
|
||||
// Note: This will not remove any ids from the arena
|
||||
pub(crate) fn drop_scope(&mut self, id: ScopeId) {
|
||||
|
||||
@@ -762,7 +762,11 @@ impl VirtualDom {
|
||||
|
||||
impl Drop for VirtualDom {
|
||||
fn drop(&mut self) {
|
||||
// Simply drop this scope which drops all of its children
|
||||
self.drop_scope(ScopeId::ROOT);
|
||||
// Drop all scopes in order of height
|
||||
let mut scopes = self.scopes.drain().collect::<Vec<_>>();
|
||||
scopes.sort_by_key(|scope| scope.context().height);
|
||||
for scope in scopes.into_iter().rev() {
|
||||
drop(scope);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user