Further changes required by Servo

This commit is contained in:
Oriol Brufau 2023-11-16 00:09:09 +01:00 committed by Martin Robinson
parent 744b21e72a
commit c7f8845665
2 changed files with 51 additions and 10 deletions

View file

@ -3319,12 +3319,29 @@ impl<'a> SelectorsElement for DomRoot<Element> {
self.is_html_element() && self.local_name() == &local_name!("slot")
}
fn set_selector_flags(&self, flags: ElementSelectorFlags) {
fn apply_selector_flags(&self, flags: ElementSelectorFlags) {
// Handle flags that apply to the element.
let self_flags = flags.for_self();
if !self_flags.is_empty() {
#[allow(unsafe_code)]
unsafe {
Dom::from_ref(self.deref())
.to_layout()
.insert_selector_flags(flags);
.insert_selector_flags(self_flags);
}
}
// Handle flags that apply to the parent.
let parent_flags = flags.for_parent();
if !parent_flags.is_empty() {
if let Some(p) = self.parent_element() {
#[allow(unsafe_code)]
unsafe {
Dom::from_ref(p.deref())
.to_layout()
.insert_selector_flags(parent_flags);
}
}
}
}
}

View file

@ -672,9 +672,21 @@ impl<'dom, LayoutDataType: LayoutDataTrait> ::selectors::Element
self.element.is_html_element() && self.as_node().owner_doc().is_html_document()
}
fn set_selector_flags(&self, flags: ElementSelectorFlags) {
fn apply_selector_flags(&self, flags: ElementSelectorFlags) {
// Handle flags that apply to the element.
let self_flags = flags.for_self();
if !self_flags.is_empty() {
self.element.insert_selector_flags(flags);
}
// Handle flags that apply to the parent.
let parent_flags = flags.for_parent();
if !parent_flags.is_empty() {
if let Some(p) = self.as_node().parent_element() {
p.element.insert_selector_flags(flags);
}
}
}
}
/// A wrapper around elements that ensures layout can only
@ -915,9 +927,21 @@ impl<'dom, LayoutDataType: LayoutDataTrait> ::selectors::Element
false
}
fn set_selector_flags(&self, flags: ElementSelectorFlags) {
fn apply_selector_flags(&self, flags: ElementSelectorFlags) {
// Handle flags that apply to the element.
let self_flags = flags.for_self();
if !self_flags.is_empty() {
self.element.element.insert_selector_flags(flags);
}
// Handle flags that apply to the parent.
let parent_flags = flags.for_parent();
if !parent_flags.is_empty() {
if let Some(p) = self.element.parent_element() {
p.element.insert_selector_flags(flags);
}
}
}
}
impl<'dom, LayoutDataType: LayoutDataTrait> GetStyleAndOpaqueLayoutData<'dom>