diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/node.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 9a248e7263f..25a0c4625e8 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -279,6 +279,7 @@ impl Node { let parent_in_doc = self.is_in_doc(); let parent_in_shadow_tree = self.is_in_shadow_tree(); + let parent_is_connected = self.is_connected(); for node in new_child.traverse_preorder() { if parent_in_shadow_tree { if let Some(shadow_root) = self.downcast::<ShadowRoot>() { @@ -287,11 +288,12 @@ impl Node { node.set_owner_shadow_root(&*self.owner_shadow_root()); } } - let is_connected = if let Some(element) = node.downcast::<Element>() { - element.is_connected() - } else { - false - }; + let mut is_connected = parent_is_connected; + if !is_connected { + if let Some(element) = node.downcast::<Element>() { + is_connected = element.is_connected(); + } + } node.set_flag(NodeFlags::IS_IN_DOC, parent_in_doc); node.set_flag(NodeFlags::IS_IN_SHADOW_TREE, parent_in_shadow_tree); node.set_flag(NodeFlags::IS_CONNECTED, is_connected); |