mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Further changes required by Servo
This commit is contained in:
parent
744b21e72a
commit
c7f8845665
2 changed files with 51 additions and 10 deletions
|
@ -3319,12 +3319,29 @@ impl<'a> SelectorsElement for DomRoot<Element> {
|
||||||
self.is_html_element() && self.local_name() == &local_name!("slot")
|
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)]
|
#[allow(unsafe_code)]
|
||||||
unsafe {
|
unsafe {
|
||||||
Dom::from_ref(self.deref())
|
Dom::from_ref(self.deref())
|
||||||
.to_layout()
|
.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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -672,9 +672,21 @@ impl<'dom, LayoutDataType: LayoutDataTrait> ::selectors::Element
|
||||||
self.element.is_html_element() && self.as_node().owner_doc().is_html_document()
|
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);
|
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
|
/// A wrapper around elements that ensures layout can only
|
||||||
|
@ -915,9 +927,21 @@ impl<'dom, LayoutDataType: LayoutDataTrait> ::selectors::Element
|
||||||
false
|
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);
|
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>
|
impl<'dom, LayoutDataType: LayoutDataTrait> GetStyleAndOpaqueLayoutData<'dom>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue