aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout')
-rw-r--r--components/layout/block.rs9
-rw-r--r--components/layout/display_list_builder.rs163
-rw-r--r--components/layout/inline.rs13
3 files changed, 74 insertions, 111 deletions
diff --git a/components/layout/block.rs b/components/layout/block.rs
index 7de0d52ef42..d34ecfd546d 100644
--- a/components/layout/block.rs
+++ b/components/layout/block.rs
@@ -45,7 +45,7 @@ use fragment::{CoordinateSystem, Fragment, FragmentBorderBoxIterator, HAS_LAYER}
use fragment::{SpecificFragmentInfo};
use gfx::display_list::{ClippingRegion, DisplayList};
use gfx_traits::LayerId;
-use incremental::{REFLOW, REFLOW_OUT_OF_FLOW};
+use incremental::{BUBBLE_ISIZES, REFLOW, REFLOW_OUT_OF_FLOW, REPAINT};
use layout_debug;
use layout_task::DISPLAY_PORT_SIZE_FACTOR;
use model::{CollapsibleMargins, MaybeAuto, specified, specified_or_none};
@@ -983,6 +983,7 @@ impl BlockFlow {
self.formatting_context_type() == FormattingContextType::None) &&
!self.base.flags.contains(IS_ABSOLUTELY_POSITIONED) {
self.base.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
+ self.fragment.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
}
}
@@ -1202,6 +1203,7 @@ impl BlockFlow {
self.base.position.size.block = block_size;
self.base.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
+ self.fragment.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
}
/// Compute inline size based using the `block_container_inline_size` set by the parent flow.
@@ -1430,6 +1432,7 @@ impl BlockFlow {
// earlier, lay it out again.
self.base.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
+ self.fragment.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
}
fn is_inline_block(&self) -> bool {
@@ -1574,7 +1577,8 @@ impl Flow for BlockFlow {
LengthOrPercentageOrAuto::Length(_) => false,
_ => true,
};
- self.bubble_inline_sizes_for_block(consult_children)
+ self.bubble_inline_sizes_for_block(consult_children);
+ self.fragment.restyle_damage.remove(BUBBLE_ISIZES);
}
/// Recursively (top-down) determines the actual inline-size of child contexts and fragments.
@@ -1993,6 +1997,7 @@ impl Flow for BlockFlow {
self.build_display_list_for_block(box DisplayList::new(),
layout_context,
BorderPaintingMode::Separate);
+ self.fragment.restyle_damage.remove(REPAINT);
if opts::get().validate_display_list_geometry {
self.base.validate_display_list_geometry();
}
diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs
index 48b4a7bdff9..35c8de55fb4 100644
--- a/components/layout/display_list_builder.rs
+++ b/components/layout/display_list_builder.rs
@@ -24,7 +24,7 @@ use fragment::{CoordinateSystem, Fragment, HAS_LAYER, ImageFragmentInfo, Scanned
use fragment::{SpecificFragmentInfo};
use gfx::display_list::{BLUR_INFLATION_FACTOR, BaseDisplayItem, BorderDisplayItem};
use gfx::display_list::{BorderRadii, BoxShadowClipMode, BoxShadowDisplayItem, ClippingRegion};
-use gfx::display_list::{DisplayItem, DisplayItemMetadata, DisplayList};
+use gfx::display_list::{DisplayItem, DisplayItemMetadata, DisplayList, DisplayListSection};
use gfx::display_list::{GradientDisplayItem};
use gfx::display_list::{GradientStop, ImageDisplayItem, LayeredItem, LayerInfo};
use gfx::display_list::{LineDisplayItem, OpaqueNode, SolidColorDisplayItem};
@@ -71,7 +71,7 @@ pub trait FragmentDisplayListBuilding {
style: &ComputedValues,
display_list: &mut DisplayList,
layout_context: &LayoutContext,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion);
@@ -84,21 +84,21 @@ pub trait FragmentDisplayListBuilding {
-> Size2D<Au>;
/// Adds the display items necessary to paint the background image of this fragment to the
- /// display list at the appropriate stacking level.
+ /// appropriate section of the display list.
fn build_display_list_for_background_image(&self,
style: &ComputedValues,
display_list: &mut DisplayList,
layout_context: &LayoutContext,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion,
image_url: &Url);
/// Adds the display items necessary to paint the background linear gradient of this fragment
- /// to the display list at the appropriate stacking level.
+ /// to the appropriate section of the display list.
fn build_display_list_for_background_linear_gradient(&self,
display_list: &mut DisplayList,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion,
gradient: &LinearGradient,
@@ -112,7 +112,7 @@ pub trait FragmentDisplayListBuilding {
border_painting_mode: BorderPaintingMode,
display_list: &mut DisplayList,
bounds: &Rect<Au>,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
clip: &ClippingRegion);
/// Adds the display items necessary to paint the outline of this fragment to the display list
@@ -129,7 +129,7 @@ pub trait FragmentDisplayListBuilding {
style: &ComputedValues,
list: &mut DisplayList,
layout_context: &LayoutContext,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion);
@@ -169,7 +169,7 @@ pub trait FragmentDisplayListBuilding {
relative_containing_block_size: &LogicalSize<Au>,
relative_containing_block_mode: WritingMode,
border_painting_mode: BorderPaintingMode,
- background_and_border_level: BackgroundAndBorderLevel,
+ display_list_section: DisplayListSection,
clip: &ClippingRegion,
stacking_relative_display_port: &Rect<Au>);
@@ -192,7 +192,7 @@ pub trait FragmentDisplayListBuilding {
fn build_display_items_for_selection_if_necessary(&self,
display_list: &mut DisplayList,
stacking_relative_border_box: &Rect<Au>,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
clip: &ClippingRegion);
/// Creates the text display item for one text fragment. This can be called multiple times for
@@ -279,7 +279,7 @@ impl FragmentDisplayListBuilding for Fragment {
style: &ComputedValues,
display_list: &mut DisplayList,
layout_context: &LayoutContext,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion) {
// Adjust the clipping region as necessary to account for `border-radius`.
@@ -317,14 +317,14 @@ impl FragmentDisplayListBuilding for Fragment {
}
}
- display_list.push(DisplayItem::SolidColorClass(box SolidColorDisplayItem {
+ display_list.add_to_section(DisplayItem::SolidColorClass(box SolidColorDisplayItem {
base: BaseDisplayItem::new(&bounds,
DisplayItemMetadata::new(self.node,
style,
Cursor::DefaultCursor),
&clip),
color: background_color.to_gfx_color(),
- }), level);
+ }), display_list_section);
// The background image is painted on top of the background color.
// Implements background image, per spec:
@@ -334,7 +334,7 @@ impl FragmentDisplayListBuilding for Fragment {
None => {}
Some(computed::Image::LinearGradient(ref gradient)) => {
self.build_display_list_for_background_linear_gradient(display_list,
- level,
+ display_list_section,
&bounds,
&clip,
gradient,
@@ -344,7 +344,7 @@ impl FragmentDisplayListBuilding for Fragment {
self.build_display_list_for_background_image(style,
display_list,
layout_context,
- level,
+ display_list_section,
&bounds,
&clip,
image_url)
@@ -409,7 +409,7 @@ impl FragmentDisplayListBuilding for Fragment {
style: &ComputedValues,
display_list: &mut DisplayList,
layout_context: &LayoutContext,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion,
image_url: &Url) {
@@ -504,7 +504,7 @@ impl FragmentDisplayListBuilding for Fragment {
};
// Create the image display item.
- display_list.push(DisplayItem::ImageClass(box ImageDisplayItem {
+ display_list.add_to_section(DisplayItem::ImageClass(box ImageDisplayItem {
base: BaseDisplayItem::new(&bounds,
DisplayItemMetadata::new(self.node,
style,
@@ -513,13 +513,13 @@ impl FragmentDisplayListBuilding for Fragment {
image: image.clone(),
stretch_size: Size2D::new(image_size.width, image_size.height),
image_rendering: style.get_effects().image_rendering.clone(),
- }), level);
+ }), display_list_section);
}
}
fn build_display_list_for_background_linear_gradient(&self,
display_list: &mut DisplayList,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion,
gradient: &LinearGradient,
@@ -633,14 +633,14 @@ impl FragmentDisplayListBuilding for Fragment {
stops: stops,
});
- display_list.push(gradient_display_item, level)
+ display_list.add_to_section(gradient_display_item, display_list_section)
}
fn build_display_list_for_box_shadow_if_applicable(&self,
style: &ComputedValues,
list: &mut DisplayList,
_layout_context: &LayoutContext,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
absolute_bounds: &Rect<Au>,
clip: &ClippingRegion) {
// NB: According to CSS-BACKGROUNDS, box shadows render in *reverse* order (front to back).
@@ -652,7 +652,7 @@ impl FragmentDisplayListBuilding for Fragment {
box_shadow.spread_radius);
// TODO(pcwalton): Multiple border radii; elliptical border radii.
- list.push(DisplayItem::BoxShadowClass(box BoxShadowDisplayItem {
+ list.add_to_section(DisplayItem::BoxShadowClass(box BoxShadowDisplayItem {
base: BaseDisplayItem::new(&bounds,
DisplayItemMetadata::new(self.node,
style,
@@ -671,7 +671,7 @@ impl FragmentDisplayListBuilding for Fragment {
} else {
BoxShadowClipMode::Outset
},
- }), level);
+ }), display_list_section);
}
}
@@ -681,7 +681,7 @@ impl FragmentDisplayListBuilding for Fragment {
border_painting_mode: BorderPaintingMode,
display_list: &mut DisplayList,
bounds: &Rect<Au>,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
clip: &ClippingRegion) {
let mut border = style.logical_border_width();
@@ -723,7 +723,7 @@ impl FragmentDisplayListBuilding for Fragment {
}
// Append the border to the display list.
- display_list.push(DisplayItem::BorderClass(box BorderDisplayItem {
+ display_list.add_to_section(DisplayItem::BorderClass(box BorderDisplayItem {
base: BaseDisplayItem::new(&bounds,
DisplayItemMetadata::new(self.node,
style,
@@ -736,7 +736,7 @@ impl FragmentDisplayListBuilding for Fragment {
colors.left.to_gfx_color()),
style: border_style,
radius: build_border_radius(&bounds, border_style_struct),
- }), level);
+ }), display_list_section);
}
fn build_display_list_for_outline_if_applicable(&self,
@@ -862,7 +862,7 @@ impl FragmentDisplayListBuilding for Fragment {
fn build_display_items_for_selection_if_necessary(&self,
display_list: &mut DisplayList,
stacking_relative_border_box: &Rect<Au>,
- level: StackingLevel,
+ display_list_section: DisplayListSection,
clip: &ClippingRegion) {
let scanned_text_fragment_info = match self.specific {
SpecificFragmentInfo::ScannedText(ref scanned_text_fragment_info) => {
@@ -895,12 +895,12 @@ impl FragmentDisplayListBuilding for Fragment {
cursor = Cursor::VerticalTextCursor;
};
- display_list.push(DisplayItem::SolidColorClass(box SolidColorDisplayItem {
+ display_list.add_to_section(DisplayItem::SolidColorClass(box SolidColorDisplayItem {
base: BaseDisplayItem::new(&insertion_point_bounds,
DisplayItemMetadata::new(self.node, &*self.style, cursor),
&clip),
color: self.style().get_color().color.to_gfx_color(),
- }), level);
+ }), display_list_section);
}
fn build_display_list(&mut self,
@@ -910,7 +910,7 @@ impl FragmentDisplayListBuilding for Fragment {
relative_containing_block_size: &LogicalSize<Au>,
relative_containing_block_mode: WritingMode,
border_painting_mode: BorderPaintingMode,
- background_and_border_level: BackgroundAndBorderLevel,
+ display_list_section: DisplayListSection,
clip: &ClippingRegion,
stacking_relative_display_port: &Rect<Au>) {
if self.style().get_inheritedbox().visibility != visibility::T::visible {
@@ -947,9 +947,6 @@ impl FragmentDisplayListBuilding for Fragment {
debug!("Fragment::build_display_list: intersected. Adding display item...");
if self.is_primary_fragment() {
- let level =
- StackingLevel::from_background_and_border_level(background_and_border_level);
-
// Add shadows, background, borders, and outlines, if applicable.
if let Some(ref inline_context) = self.inline_context {
for node in inline_context.nodes.iter().rev() {
@@ -957,14 +954,14 @@ impl FragmentDisplayListBuilding for Fragment {
&*node.style,
display_list,
layout_context,
- level,
+ display_list_section,
&stacking_relative_border_box,
&clip);
self.build_display_list_for_box_shadow_if_applicable(
&*node.style,
display_list,
layout_context,
- level,
+ display_list_section,
&stacking_relative_border_box,
&clip);
@@ -978,7 +975,7 @@ impl FragmentDisplayListBuilding for Fragment {
border_painting_mode,
display_list,
&stacking_relative_border_box,
- level,
+ display_list_section,
&clip);
self.build_display_list_for_outline_if_applicable(
@@ -993,20 +990,20 @@ impl FragmentDisplayListBuilding for Fragment {
self.build_display_list_for_background_if_applicable(&*self.style,
display_list,
layout_context,
- level,
+ display_list_section,
&stacking_relative_border_box,
&clip);
self.build_display_list_for_box_shadow_if_applicable(&*self.style,
display_list,
layout_context,
- level,
+ display_list_section,
&stacking_relative_border_box,
&clip);
self.build_display_list_for_borders_if_applicable(&*self.style,
border_painting_mode,
display_list,
&stacking_relative_border_box,
- level,
+ display_list_section,
&clip);
self.build_display_list_for_outline_if_applicable(&*self.style,
display_list,
@@ -1017,7 +1014,7 @@ impl FragmentDisplayListBuilding for Fragment {
// Paint the selection point if necessary.
self.build_display_items_for_selection_if_necessary(display_list,
&stacking_relative_border_box,
- level,
+ display_list_section,
&clip);
}
@@ -1507,12 +1504,12 @@ pub trait BlockFlowDisplayListBuilding {
display_list: &mut DisplayList,
layout_context: &LayoutContext,
border_painting_mode: BorderPaintingMode,
- background_border_level: BackgroundAndBorderLevel);
+ background_border_level: DisplayListSection);
fn build_display_list_for_static_block(&mut self,
display_list: Box<DisplayList>,
layout_context: &LayoutContext,
border_painting_mode: BorderPaintingMode,
- background_border_level: BackgroundAndBorderLevel);
+ background_border_level: DisplayListSection);
fn build_display_list_for_absolutely_positioned_block(
&mut self,
display_list: Box<DisplayList>,
@@ -1533,7 +1530,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow {
display_list: &mut DisplayList,
layout_context: &LayoutContext,
border_painting_mode: BorderPaintingMode,
- background_border_level: BackgroundAndBorderLevel) {
+ background_border_level: DisplayListSection) {
// Add the box that starts the block context.
let clip = if self.fragment.establishes_stacking_context() {
self.base.clip.translate(&-self.base.stacking_relative_position)
@@ -1567,7 +1564,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow {
mut display_list: Box<DisplayList>,
layout_context: &LayoutContext,
border_painting_mode: BorderPaintingMode,
- background_border_level: BackgroundAndBorderLevel) {
+ background_border_level: DisplayListSection) {
self.build_display_list_for_block_base(&mut *display_list,
layout_context,
border_painting_mode,
@@ -1617,7 +1614,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow {
&self.base.early_absolute_position_info.relative_containing_block_size,
self.base.early_absolute_position_info.relative_containing_block_mode,
border_painting_mode,
- BackgroundAndBorderLevel::RootOfStackingContext,
+ DisplayListSection::BackgroundAndBorders,
&clip,
&self.base.stacking_relative_position_of_display_port);
@@ -1630,17 +1627,16 @@ impl BlockFlowDisplayListBuilding for BlockFlow {
Some(outer_display_list_for_overflow_scroll)
}
_ => {
- let establishes_stacking_context = self.fragment.establishes_stacking_context();
- let background_and_border_level = if establishes_stacking_context {
- BackgroundAndBorderLevel::RootOfStackingContext
+ let display_list_section = if self.fragment.establishes_stacking_context() {
+ DisplayListSection::BackgroundAndBorders
} else {
- BackgroundAndBorderLevel::Block
+ DisplayListSection::BlockBackgroundsAndBorders
};
self.build_display_list_for_block_base(&mut *display_list,
layout_context,
border_painting_mode,
- background_and_border_level);
+ display_list_section);
None
}
};
@@ -1692,7 +1688,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow {
self.build_display_list_for_block_base(&mut *display_list,
layout_context,
border_painting_mode,
- BackgroundAndBorderLevel::RootOfStackingContext);
+ DisplayListSection::BackgroundAndBorders);
display_list.form_float_pseudo_stacking_context();
self.base.display_list_building_result = if self.fragment.establishes_stacking_context() {
@@ -1722,10 +1718,11 @@ impl BlockFlowDisplayListBuilding for BlockFlow {
layout_context,
border_painting_mode);
} else {
- self.build_display_list_for_static_block(display_list,
- layout_context,
- border_painting_mode,
- BackgroundAndBorderLevel::Block);
+ self.build_display_list_for_static_block(
+ display_list,
+ layout_context,
+ border_painting_mode,
+ DisplayListSection::BlockBackgroundsAndBorders);
}
}
}
@@ -1754,7 +1751,7 @@ impl InlineFlowDisplayListBuilding for InlineFlow {
.early_absolute_position_info
.relative_containing_block_mode,
BorderPaintingMode::Separate,
- BackgroundAndBorderLevel::Content,
+ DisplayListSection::Content,
&self.base.clip,
&self.base.stacking_relative_position_of_display_port);
@@ -1854,7 +1851,7 @@ impl ListItemFlowDisplayListBuilding for ListItemFlow {
.early_absolute_position_info
.relative_containing_block_mode,
BorderPaintingMode::Separate,
- BackgroundAndBorderLevel::Content,
+ DisplayListSection::Content,
&self.block_flow.base.clip,
&self.block_flow
.base
@@ -1906,7 +1903,7 @@ impl BaseFlowDisplayListBuilding for BaseFlow {
let mut color = THREAD_TINT_COLORS[thread_id as usize % THREAD_TINT_COLORS.len()];
color.a = 1.0;
- display_list.push(DisplayItem::BorderClass(box BorderDisplayItem {
+ display_list.add_to_section(DisplayItem::BorderClass(box BorderDisplayItem {
base: BaseDisplayItem::new(&stacking_context_relative_bounds.inflate(Au::from_px(2),
Au::from_px(2)),
DisplayItemMetadata {
@@ -1918,7 +1915,7 @@ impl BaseFlowDisplayListBuilding for BaseFlow {
color: SideOffsets2D::new_all_same(color),
style: SideOffsets2D::new_all_same(border_style::T::solid),
radius: BorderRadii::all_same(Au(0)),
- }), StackingLevel::Content);
+ }), DisplayListSection::Content);
}
}
@@ -1950,54 +1947,6 @@ fn position_to_offset(position: LengthOrPercentage, Au(total_length): Au) -> f32
}
}
-/// "Steps" as defined by CSS 2.1 § E.2.
-#[derive(Clone, PartialEq, Debug, Copy)]
-pub enum StackingLevel {
- /// The border and backgrounds for the root of this stacking context: steps 1 and 2.
- BackgroundAndBorders,
- /// Borders and backgrounds for block-level descendants: step 4.
- BlockBackgroundsAndBorders,
- /// All non-positioned content.
- Content,
-}
-
-impl StackingLevel {
- #[inline]
- pub fn from_background_and_border_level(level: BackgroundAndBorderLevel) -> StackingLevel {
- match level {
- BackgroundAndBorderLevel::RootOfStackingContext => StackingLevel::BackgroundAndBorders,
- BackgroundAndBorderLevel::Block => StackingLevel::BlockBackgroundsAndBorders,
- BackgroundAndBorderLevel::Content => StackingLevel::Content,
- }
- }
-}
-
-/// Which level to place backgrounds and borders in.
-pub enum BackgroundAndBorderLevel {
- RootOfStackingContext,
- Block,
- Content,
-}
-
-trait StackingContextConstruction {
- /// Adds the given display item at the specified level to this display list.
- fn push(&mut self, display_item: DisplayItem, level: StackingLevel);
-}
-
-impl StackingContextConstruction for DisplayList {
- fn push(&mut self, display_item: DisplayItem, level: StackingLevel) {
- match level {
- StackingLevel::BackgroundAndBorders => {
- self.background_and_borders.push_back(display_item)
- }
- StackingLevel::BlockBackgroundsAndBorders => {
- self.block_backgrounds_and_borders.push_back(display_item)
- }
- StackingLevel::Content => self.content.push_back(display_item),
- }
- }
-}
-
/// Adjusts `content_rect` as necessary for the given spread, and blur so that the resulting
/// bounding rect contains all of a shadow's ink.
fn shadow_bounds(content_rect: &Rect<Au>, blur_radius: Au, spread_radius: Au) -> Rect<Au> {
diff --git a/components/layout/inline.rs b/components/layout/inline.rs
index 232de1bb5f2..9f77ecfcb9e 100644
--- a/components/layout/inline.rs
+++ b/components/layout/inline.rs
@@ -17,7 +17,7 @@ use fragment::{CoordinateSystem, Fragment, FragmentBorderBoxIterator, SpecificFr
use gfx::display_list::OpaqueNode;
use gfx::font::FontMetrics;
use gfx::font_context::FontContext;
-use incremental::{REFLOW, REFLOW_OUT_OF_FLOW, RESOLVE_GENERATED_CONTENT};
+use incremental::{BUBBLE_ISIZES, REFLOW, REFLOW_OUT_OF_FLOW, REPAINT, RESOLVE_GENERATED_CONTENT};
use layout_debug;
use model::IntrinsicISizesContribution;
use std::cmp::max;
@@ -1354,6 +1354,8 @@ impl Flow for InlineFlow {
intrinsic_sizes_for_nonbroken_run.union_inline(&intrinsic_sizes_for_fragment);
}
}
+
+ fragment.restyle_damage.remove(BUBBLE_ISIZES);
}
// Flush any remaining nonbroken-run and inline-run intrinsic sizes.
@@ -1615,6 +1617,9 @@ impl Flow for InlineFlow {
});
self.base.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
+ for fragment in &mut self.fragments.fragments {
+ fragment.restyle_damage.remove(REFLOW_OUT_OF_FLOW | REFLOW);
+ }
}
fn compute_absolute_position(&mut self, _: &LayoutContext) {
@@ -1742,7 +1747,11 @@ impl Flow for InlineFlow {
fn update_late_computed_block_position_if_necessary(&mut self, _: Au) {}
fn build_display_list(&mut self, layout_context: &LayoutContext) {
- self.build_display_list_for_inline(layout_context)
+ self.build_display_list_for_inline(layout_context);
+
+ for fragment in &mut self.fragments.fragments {
+ fragment.restyle_damage.remove(REPAINT);
+ }
}
fn repair_style(&mut self, _: &Arc<ComputedValues>) {}