diff options
Diffstat (limited to 'components/layout/wrapper.rs')
-rw-r--r-- | components/layout/wrapper.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index e76af843ea0..00c77631707 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -34,6 +34,7 @@ use core::nonzero::NonZero; use data::{LayoutDataFlags, PrivateLayoutData}; use gfx::display_list::OpaqueNode; use gfx::text::glyph::CharIndex; +use gfx_traits::{LayerId, LayerType}; use incremental::RestyleDamage; use msg::constellation_msg::PipelineId; use opaque_node::OpaqueNodeMethods; @@ -629,7 +630,7 @@ impl<T> PseudoElementType<T> { } } - pub fn is_before_or_after(&self) -> bool { + pub fn is_replaced_content(&self) -> bool { match *self { PseudoElementType::Before(_) | PseudoElementType::After(_) => true, _ => false, @@ -851,6 +852,21 @@ pub trait ThreadSafeLayoutNode : Clone + Copy + Sized + PartialEq { fn iframe_pipeline_id(&self) -> PipelineId; fn get_colspan(&self) -> u32; + + fn layer_id(&self) -> LayerId { + let layer_type = match self.get_pseudo_element_type() { + PseudoElementType::Normal => LayerType::FragmentBody, + PseudoElementType::Before(_) => LayerType::BeforePseudoContent, + PseudoElementType::After(_) => LayerType::AfterPseudoContent, + PseudoElementType::DetailsSummary(_) => LayerType::FragmentBody, + PseudoElementType::DetailsContent(_) => LayerType::FragmentBody, + }; + LayerId::new_of_type(layer_type, self.opaque().id() as usize) + } + + fn layer_id_for_overflow_scroll(&self) -> LayerId { + LayerId::new_of_type(LayerType::OverflowScroll, self.opaque().id() as usize) + } } // This trait is only public so that it can be implemented by the gecko wrapper. @@ -1025,7 +1041,7 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> { } fn text_content(&self) -> TextContent { - if self.pseudo.is_before_or_after() { + if self.pseudo.is_replaced_content() { let data = &self.borrow_layout_data().unwrap().style_data; let style = if self.pseudo.is_before() { |