mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
layout_2020: Tag fragments with their pseudo content type
This will allow us to answer queries and properly handle animations in the future for fragments generated for pseudo content.
This commit is contained in:
parent
7df4655b60
commit
89855afa4d
14 changed files with 271 additions and 265 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
use crate::context::LayoutContext;
|
||||
use crate::display_list::conversions::ToWebRender;
|
||||
use crate::fragments::{BoxFragment, Fragment, TextFragment};
|
||||
use crate::fragments::{BoxFragment, Fragment, Tag, TextFragment};
|
||||
use crate::geom::{PhysicalPoint, PhysicalRect};
|
||||
use crate::replaced::IntrinsicSizes;
|
||||
use crate::style_ext::ComputedValuesExt;
|
||||
|
@ -348,7 +348,7 @@ impl<'a> BuilderForBoxFragment<'a> {
|
|||
}
|
||||
|
||||
fn build_background(&mut self, builder: &mut DisplayListBuilder) {
|
||||
if self.fragment.tag == builder.element_for_canvas_background {
|
||||
if self.fragment.tag.node() == builder.element_for_canvas_background {
|
||||
// This background is already painted for the canvas, don’t paint it again here.
|
||||
return;
|
||||
}
|
||||
|
@ -405,7 +405,7 @@ impl<'a> BuilderForBoxFragment<'a> {
|
|||
let (width, height, key) = match image_url.url() {
|
||||
Some(url) => {
|
||||
match builder.context.get_webrender_image_for_url(
|
||||
self.fragment.tag,
|
||||
self.fragment.tag.node(),
|
||||
url.clone(),
|
||||
UsePlaceholder::No,
|
||||
) {
|
||||
|
@ -541,7 +541,7 @@ fn glyphs(
|
|||
glyphs
|
||||
}
|
||||
|
||||
fn hit_info(style: &ComputedValues, tag: OpaqueNode, auto_cursor: Cursor) -> HitInfo {
|
||||
fn hit_info(style: &ComputedValues, tag: Tag, auto_cursor: Cursor) -> HitInfo {
|
||||
use style::computed_values::pointer_events::T as PointerEvents;
|
||||
|
||||
let inherited_ui = style.get_inherited_ui();
|
||||
|
@ -549,7 +549,7 @@ fn hit_info(style: &ComputedValues, tag: OpaqueNode, auto_cursor: Cursor) -> Hit
|
|||
None
|
||||
} else {
|
||||
let cursor = cursor(inherited_ui.cursor.keyword, auto_cursor);
|
||||
Some((tag.0 as u64, cursor as u16))
|
||||
Some((tag.node().0 as u64, cursor as u16))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ use crate::fragments::{
|
|||
use crate::geom::PhysicalRect;
|
||||
use crate::style_ext::ComputedValuesExt;
|
||||
use euclid::default::Rect;
|
||||
use gfx_traits::{combine_id_with_fragment_type, FragmentType};
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use std::cmp::Ordering;
|
||||
use std::mem;
|
||||
|
@ -329,7 +328,7 @@ impl StackingContext {
|
|||
|
||||
// The `StackingContextFragment` we found is for the root DOM element:
|
||||
debug_assert_eq!(
|
||||
box_fragment.tag,
|
||||
box_fragment.tag.node(),
|
||||
fragment_tree.canvas_background.root_element
|
||||
);
|
||||
|
||||
|
@ -705,12 +704,10 @@ impl BoxFragment {
|
|||
let overflow_y = self.style.get_box().overflow_y;
|
||||
let original_scroll_and_clip_info = builder.current_space_and_clip;
|
||||
if overflow_x != ComputedOverflow::Visible || overflow_y != ComputedOverflow::Visible {
|
||||
// TODO(mrobinson): We should use the correct fragment type, once we generate
|
||||
// fragments from ::before and ::after generated content selectors.
|
||||
let id =
|
||||
combine_id_with_fragment_type(self.tag.id() as usize, FragmentType::FragmentBody)
|
||||
as u64;
|
||||
let external_id = wr::ExternalScrollId(id, builder.wr.pipeline_id);
|
||||
let external_id = wr::ExternalScrollId(
|
||||
self.tag.to_display_list_fragment_id(),
|
||||
builder.wr.pipeline_id,
|
||||
);
|
||||
|
||||
let sensitivity = if ComputedOverflow::Hidden == overflow_x &&
|
||||
ComputedOverflow::Hidden == overflow_y
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue